본문으로 건너뛰기

계산기2(r304판 Blame)

r304
r297
1[[분류:냥]][[분류:계산용 틀]][Include(틀:상세 내용, 설명대상=원본, 문서명=틀\:구 계산기2)][Include(틀:상세 내용, 설명대상=떼어낸 계산기, 문서명=틀\:계산기/구버전)]{{{#!wiki style="display: none;"
r129
2##디버그용 if 문법 ("문자열" 값으로 정의해야 합니다.)
r263
3{{{#!if a= ,b= ,f=
r182
4}}}
r209
5##== 변수 설명 ==
r50
6'''as''' : "a" value to string; '''bs''' : "b" value to string;
r51
7'''al''' : "a" string length (integer); '''bl''' : "b" string length (integer)
8'''ad''' : "a" decimal point (integer); '''bd''' : "b" decimal point (integer);
9'''au''' : --gold-- "a" upper value (string→integer); '''bu''' : "b" upper value (string→integer);
10'''ab''' : "a" below value (string→integer); '''bb''' : "b" below value (string→integer);
r202
11'''ap''' : "a" # of places of decimal (for addition or subtraction);
r207
12'''ac''' : a '''c'''onstant of "a" for division (integer);
r202
13'''bp''' : "b" # of places of decimal (for addition or subtraction);
r207
14'''bc''' : a '''c'''onstant of "b" for division (integer);
r50
150.303과 0.0303은 다른 수이므로 자리수가 다름을 표시할 용도
r73
16'''ru''' : "result" upper value (integer→string); '''rb''' : "result" below value (integer→string);
17'''rp''' : "result" # of places of decimal (integer);
r117
18'''rs''' : "result" suprerior value (integer→string); '''ri''' : "result" inferior value (integer→string);
r209
19'''i''' : index;
20'''tu''' : temporary value 1 (integer); '''tv''' : temporary value 2 (integer);
r235
21'''tw''' : temporary value 3 (integer); '''tx''' : temporary value 4 (integer→string);
22'''ty''' : temporary value 5 (integer); '''tz''' : temporary value 6 (integer);
r228
23'''pd''' : padding with zeros. (string)
r208
24'''ps''' : pass (logical); '''ts''' : --not about gender-- test (logical) ; '''br''' : break (logical);
r209
25'''ea''' : error code about "a" (integer); '''eb''' : error code about "b" (integer);
26'''wa''' : warning code about "a" (integer); '''wb''' : warning code about "b" (integer);
27'''ma''' : message about "a" (string); '''mb''' : message about "b" (string);
28'''tm''' : temporary string, or transaction message (string); '''tn''' : temporary string 2 (string);
r158
29'''ns''' : negative sign for multiplication and division (string);
r209
30
31##== 초기화 ==
32값을 미리 정의하여 초기화합니다. 중간에 --장난으로-- 계산에 사용되는 변수에 값을 부여한 채로 include 하더라도 이를 무시합니다.
r231
33{{{#!if this.as=a.toString(), this.bs=b.toString(), this.rs=0+0, this.ru=0+0, this.rb=0+0, this.ri=0+0, this.rp=0+0, this.i=0+0, this.tu=0, this.tv=1+0, this.tw=0, this.tx=0, this.ty=0, this.ea=0+0, this.eb=0+0, this.wa=0+0, this.wb=0+0, this.ps=false, this.ts=false, this.br=false, this.ns="", this.ma="", this.mb="", this.tm="", this.tn="", this.pd="000000000000000000"
r135
34}}}{{{#!if this.al=as.length, this.bl=bs.length, this.ad=as.indexOf("."), this.bd=bs.indexOf(".")
r48
35}}}{{{#!if ad!=-1
r126
36소수점이 발견되는 자리 번호가 ad이므로 ad+1번에 해당되는 자리부터 끝까지 표기합니다.
r51
37{{{#!if this.au=as.substr(0,ad), this.ab=as.substr(ad+1, al-ad-1), this.ap=ab.length
r59
38}}}{{{#!if (au=="")||(au=="-")||(au=="+")
r125
39.12345 식으로 또는 -.12345 식으로 기입할 경우 upper 값을 0으로 부여합니다.
r57
40{{{#!if au="0"
r51
41}}}}}}}}}{{{#!if ad==-1
r126
42소수점이 존재하지 않을 경우 au 문자열 길이값을 ad로 정의합니다. au의 마지막 문자열 index는 ad-1이 됩니다.
r125
43{{{#!if this.au=as, ab="", ap=0+0, ad=au.length
r48
44}}}}}}{{{#!if bd!=-1
r92
45{{{#!if this.bu=bs.substr(0,bd), this.bb=bs.substr(bd+1, bl-bd-1), this.bp=bb.length
r59
46}}}{{{#!if (bu=="")||(bu=="-")||(bu=="+")
r57
47{{{#!if bu="0"
r48
48}}}}}}}}}{{{#!if bd==-1
r125
49{{{#!if this.bu=bs, bb="", bp=0+0, bd=bu.length
r46
50}}}}}}
r54
51
r207
52##== 유효성 검사 ==
r212
53the seed에서 지원되는 long(integer)가 unsigned였으면 1844경까지 가서 충분히 19자리로 놀 수 있었는데, signed long이므로 922경까지 가능한 공간에서 18자리로 잘라내기를 합니다. (소수점 위 최대 18자리, 소수점 아래 최대 18자리)
r55
54
r207
55(반점(,)을 자동적으로 생략하고 들어가는 것은 나중에 생각하겠습니다.)
r212
56
r218
57{{{#!if (as!=null)&&(bs!=null)
58a와 b 모두 입력되었을 때, br와 ts 변수를 이용하여 순차적으로 검사를 진행합니다. 도중 문제가 있으면 (br를 true로 반환하고) 오류 코드를 내도록 만듭니다. a를 먼저 보며, 소수점 윗부분을 먼저 본 다음 소수점 아랫부분을 봅니다.
r211
59변수 tm와 tn을 가져와 유효성 검사를 실행합니다.
60먼저 소수점을 2개 이상 입력했음이 탐지된다면 오류코드 5번(이중 소수점 표기)을 반환합니다.
61소수점을 입력하면 indexOf와 lastIndexOf는 서로 다른 값을 가리키게 됩니다. 소수점을 입력하지 않았을 경우 indexOf와 lastIndexOf는 -1로 서로 같은 값을 가리키게 됩니다.
r217
62{{{#!if ts=(as.indexOf(".")==as.lastIndexOf(".")),
r211
63}}}{{{#!if !ts&&!br
64{{{#!if br=true, ea=5
65}}}}}}
r209
66
r211
67문제가 없으면 au를 tm으로 복제하고 검사를 계속 합니다.
68앞자리가 마이너스(-)일 경우 이를 잘라냅니다.
69{{{#!if ts&&!br
r215
70{{{#!if tm=au, tm[0]==45
r214
71{{{#!if tm=tm.substr(1)
r215
72}}}}}}
r209
73소수점 윗자릿수가 넘치면 오류코드 1번(오버플로)를 반환합니다.
r211
74{{{#!if ts=(tm.length<=18)
75}}}}}}
76{{{#!if !ts&&!br
r208
77{{{#!if br=true, ea=1
78}}}}}}
r209
79
r244
80의도적으로 00을 적어놓았을 수 있으므로 tm 앞에 숫자 1을 더 붙인 다음, 이를 값으로 바꾼 다음 다시 텍스트 값으로 바꾼 문자열을 tn으로 정의합니다. 중간에 숫자가 아닌 문구가 들어갔다면 숫자가 아닌 문구가 들어간 부분부터 값이 잘려 나오게 됩니다.
r211
81숫자가 아닌 문구를 섞어넣었음이 탐지될 경우 오류코드 6번(소수점 윗자리 오류)을 반환합니다. (반점(,)도 걸릴 수 있습니다.)
r208
82{{{#!if ts&&!br
r211
83{{{#!if tm="1"+tm, tn=+tm, tn=tn.toString(), ts=(tm==tn)
r208
84}}}}}}
r211
85{{{#!if !ts&&!br
86{{{#!if br=true, ea=6
87}}}}}}
r209
88
r211
89소수점 아래 부분을 검사합니다. 앞에서 소수점 개수를 검사했으므로 소수점 아래 부분에 점(.)이 더 이상 나올 수 없습니다.
90소수점 아래 입력한 자릿수가 19자리를 넘어가면 오류 대신 경고코드 1번(소수점 아래 자릿수 너무 많음)을 반환하고 소수점 아래 자릿수를 최대 18자리로 잘라냅니다. (이하 이상한 문구를 섞어도 이를 계산에 넣지 않게 됩니다.)
r208
91{{{#!if ts&&!br
r211
92{{{#!if ab.length>=19
93{{{#!if wa=1, ab=ab.substr(0,18), ap=18
r199
94}}}}}}
r211
95
r212
96앞에서 소수점 아래 자릿수를 18자 이하로 줄였습니다. 문자열에서 자릿수에 해당하는 index가 비어있다면 해당 문자열의 주소값은 null이 나옵니다. (예:"테스트"[3]==null) 숫자는 문자열 각 자릿수 문자열의 유니코드 값이 null이 아닌 이상 48 이상 57 이하이며, 이를 이용하여 소수점 아래 18자리에 대해 유효성 검사를 합니다.
97{{{#!if ts=(((ab[0]==null)||((ab[0]>=48)&&(ab[0]<=57)))&&((ab[1]==null)||((ab[1]>=48)&&(ab[1]<=57)))&&((ab[2]==null)||((ab[2]>=48)&&(ab[2]<=57)))&&((ab[3]==null)||((ab[3]>=48)&&(ab[3]<=57)))&&((ab[4]==null)||((ab[4]>=48)&&(ab[4]<=57)))&&((ab[5]==null)||((ab[5]>=48)&&(ab[5]<=57)))&&((ab[6]==null)||((ab[6]>=48)&&(ab[6]<=57)))&&((ab[7]==null)||((ab[7]>=48)&&(ab[7]<=57)))&&((ab[8]==null)||((ab[8]>=48)&&(ab[8]<=57)))&&((ab[9]==null)||((ab[9]>=48)&&(ab[9]<=57)))&&((ab[10]==null)||((ab[10]>=48)&&(ab[10]<=57)))&&((ab[11]==null)||((ab[11]>=48)&&(ab[11]<=57)))&&((ab[12]==null)||((ab[12]>=48)&&(ab[12]<=57)))&&((ab[13]==null)||((ab[13]>=48)&&(ab[13]<=57)))&&((ab[14]==null)||((ab[14]>=48)&&(ab[14]<=57)))&&((ab[15]==null)||((ab[15]>=48)&&(ab[15]<=57)))&&((ab[16]==null)||((ab[16]>=48)&&(ab[16]<=57)))&&((ab[17]==null)||((ab[17]>=48)&&(ab[17]<=57))))
r199
98}}}}}}
r211
99소수점 아래 자리에 입력한 부분이 문제가 있으면 오류코드 7번(소수점 아랫자리 오류)를 반환합니다.
r209
100{{{#!if !ts&&!br
r211
101{{{#!if br=true, ea=7
r209
102}}}}}}
103
r212
104이와 같은 방법으로 b도 bu를 tm으로 복제하는 과정을 포함하여 유효성 검사를 실행합니다. 오류코드는 동일합니다.
r213
105a와 b를 각각 진단해야 하므로 br를 false로 초기화합니다.
106{{{#!if br=false, ts=(bs.indexOf(".")==bs.lastIndexOf("."))
107}}}{{{#!if !ts&&!br
r212
108{{{#!if br=true, eb=5
109}}}}}}
110{{{#!if ts&&!br
r215
111{{{#!if tm=bu, tm[0]==45
r214
112{{{#!if tm=tm.substr(1)
r212
113}}}}}}{{{#!if ts=(tm.length<=18)
114}}}}}}{{{#!if !ts&&!br
115{{{#!if br=true, eb=1
116}}}}}}
117{{{#!if ts&&!br
118{{{#!if tm="1"+tm, tn=+tm, tn=tn.toString(), ts=(tm==tn)
119}}}}}}{{{#!if !ts&&!br
120{{{#!if br=true, eb=6
121}}}}}}
122{{{#!if ts&&!br
123{{{#!if bb.length>=19
124{{{#!if wb=1, bb=bb.substr(0,18), bp=18
125}}}}}}{{{#!if ts=(((bb[0]==null)||((bb[0]>=48)&&(bb[0]<=57)))&&((bb[1]==null)||((bb[1]>=48)&&(bb[1]<=57)))&&((bb[2]==null)||((bb[2]>=48)&&(bb[2]<=57)))&&((bb[3]==null)||((bb[3]>=48)&&(bb[3]<=57)))&&((bb[4]==null)||((bb[4]>=48)&&(bb[4]<=57)))&&((bb[5]==null)||((bb[5]>=48)&&(bb[5]<=57)))&&((bb[6]==null)||((bb[6]>=48)&&(bb[6]<=57)))&&((bb[7]==null)||((bb[7]>=48)&&(bb[7]<=57)))&&((bb[8]==null)||((bb[8]>=48)&&(bb[8]<=57)))&&((bb[9]==null)||((bb[9]>=48)&&(bb[9]<=57)))&&((bb[10]==null)||((bb[10]>=48)&&(bb[10]<=57)))&&((bb[11]==null)||((bb[11]>=48)&&(bb[11]<=57)))&&((bb[12]==null)||((bb[12]>=48)&&(bb[12]<=57)))&&((bb[13]==null)||((bb[13]>=48)&&(bb[13]<=57)))&&((bb[14]==null)||((bb[14]>=48)&&(bb[14]<=57)))&&((bb[15]==null)||((bb[15]>=48)&&(bb[15]<=57)))&&((bb[16]==null)||((bb[16]>=48)&&(bb[16]<=57)))&&((bb[17]==null)||((bb[17]>=48)&&(bb[17]<=57))))
126}}}}}}{{{#!if !ts&&!br
127{{{#!if br=true, eb=7
r218
128}}}}}}}}}
r211
129
r209
130##== 2차 초기화 ==
r303
131유효성 검사가 종료되었으면 ts와 br를 false로 초기화합니다 유효성 검사에 쓰인 tm과 tn 값을 빈 문자열 값으로 초기화합니다.
132{{{#!if tm="", tn="", ts=false, br=false
r286
133}}}
134
r209
135입력한 소수점 아래에 입력한 값을 정리합니다. 이에 따라 ap, bp값도 다시 조정됩니다.
r223
136{{{#!if (ap>9)&&(ab.substr(ap-9,9)=="000000000")
r221
137{{{#!if ab=ab.substr(0,ap-9), ap=ap-9
r209
138}}}}}}
r223
139{{{#!if (ap>4)&&(ab.substr(ap-4,4)=="0000")
r209
140{{{#!if ab=ab.substr(0,ap-4), ap=ap-4
141}}}}}}
r223
142{{{#!if (ap>2)&&(ab.substr(ap-2,2)=="00")
r209
143{{{#!if ab=ab.substr(0,ap-2), ap=ap-2
144}}}}}}
r223
145{{{#!if (ap>2)&&(ab.substr(ap-2,2)=="00")
r209
146{{{#!if ab=ab.substr(0,ap-2), ap=ap-2
147}}}}}}
r223
148{{{#!if (ap>1)&&(ab.substr(ap-1,1)=="0")
r209
149{{{#!if ab=ab.substr(0,ap-1), ap=ap-1
150}}}}}}
r223
151{{{#!if (bp>9)&&(bb.substr(bp-9,9)=="000000000")
r221
152{{{#!if bb=bb.substr(0,bp-9), bp=bp-9
r209
153}}}}}}
r223
154{{{#!if (bp>4)&&(bb.substr(bp-4,4)=="0000")
r209
155{{{#!if bb=bb.substr(0,bp-4), bp=bp-4
156}}}}}}
r223
157{{{#!if (bp>2)&&(bb.substr(bp-2,2)=="00")
r209
158{{{#!if bb=bb.substr(0,bp-2), bp=bp-2
159}}}}}}
r223
160{{{#!if (bp>2)&&(bb.substr(bp-2,2)=="00")
r209
161{{{#!if bb=bb.substr(0,bp-2), bp=bp-2
162}}}}}}
r223
163{{{#!if (bp>1)&&(bb.substr(bp-1,1)=="0")
r209
164{{{#!if bb=bb.substr(0,bp-1), bp=bp-1
165}}}}}}
r207
166
r303
167그 다음 --앞자리에 0만 여러 개 적어놓고 장난치는 사람이 있을까봐-- au를 값으로 바꾼 다음 다시 문자열로 변환하여 앞자리에 있는 0들을 모두 삭제합니다. bu도 그렇게 둡니다.
168{{{#!if au=+au, au=au.toString(), bu=+bu, bu=bu.toString()
r231
169}}}
170
r303
171이 상태의 au, ab를 ma로 저장하고 bu, bb를 mb로 저장합니다.
172{{{#!if ad==-1
173{{{#!if ma=au
174}}}}}}{{{#!if ad!=-1
175{{{#!if ma=au+"."+ab
176}}}}}}
177{{{#!if bd==-1
178{{{#!if mb=bu
179}}}}}}{{{#!if bd!=-1
180{{{#!if mb=bu+"."+bb
181}}}}}}
182au 앞에 음수 부호가 달려 있었다면 ma 앞에 음수 기호를 붙입니다.
183{{{#!if as[0]==45
184{{{#!if ma="-"+ma
185}}}}}}
186bu 앞에 음수 부호가 달려 있었다면 mb 앞에 음수 기호를 붙입니다.
187{{{#!if bs[0]==45
188{{{#!if mb="-"+mb
189}}}}}}
190
r207
191##== 덧셈, 뺄셈 ==
r66
192덧셈과 뺄셈 계산과정을 적어봅니다.
193{{{#!if (f=="+")||(f=="-")
r76
194
195a과 b의 소수점 윗부분은 정수이므로 쉽게 계산할 수 있습니다.
196{{{#!if f=="+"
197{{{#!if ru=(+au)+(+bu)
198}}}}}}
199{{{#!if f=="-"
200{{{#!if ru=(+au)-(+bu)
201}}}}}}
202
r125
203a와 b 모두가 정수이면 ap==0, bp==0이 되며, 이런 경우에는 소수점 아래 자릿수를 검산할 필요가 없습니다. a와 b 중 소수점 아래 자릿수가 있는 수가 있을 때에만 소수점 윗자리의 계산값이 얼마가 나오느냐를 보면서 소수점 아래의 자릿수를 정리하는 과정이 의미가 있습니다.
r76
204{{{#!if (ap>0)||(bp>0)
r142
205만약 소수점 아래를 계산한다면 자릿수를 똑같이 맞춰야 의미가 있으므로, 자릿수가 다른 경우 자릿수가 같게 만드는 과정을 먼저 거칩니다. 이를테면 a의 소수점 자릿수가 b의 소수점 자릿수보다 많으면 b뒤에 0을 더 추가하는 방식으로 변경합니다. b 자체가 정수여도 앞에 (소수점이 없을 경우) 이미 bb="", bp=0+0으로 초기화했으므로 동작될 것입니다.
206소수점 아래 최대 18자리까지의 수를 취급하므로 최대 18칸 차이가 나게 됩니다.
207○○○○○○○○○□□□□○○□□○ 과 같이 9칸, 4칸, 2칸, 2칸, 1칸씩 차이가 나면 그 정도를 보정하게 됩니다.
208ap>bp에서 ap-bp>0이 됩니다. ap-bp는 곧 ap가 bp보다 몇 칸만큼 더 많은지를 나타냅니다.
r161
209{{{#!if ap>bp
r228
210{{{#!if bp=ap, bb+=pd
r161
211}}}{{{#!if bb=bb.substr(0,ap)
r66
212}}}}}}
r67
213
214반대로 b의 소수점 자릿수가 많은 경우도 있습니다.
r161
215{{{#!if bp>ap
r228
216{{{#!if ap=bp, ab=ab+pd
r161
217}}}{{{#!if ab=ab.substr(0,bp)
r67
218}}}}}}
r161
219
r71
220위의 과정을 거치게 되면 소수점 아래 최대 자릿수를 똑같이 맞춘 상태에서 계산하게 되므로 ap==bp가 됩니다.
r66
221
r71
222a가 음수인 경우 소수점 아래 값은 순 숫자만 표기된 상태이므로 양수 취급으로 되지 않게 소수점 아래 값인 ab에 음수 표기를 남깁니다.
r68
223{{{#!if as[0]==45
224{{{#!if ab="-"+ab
225}}}}}}
r123
226마찬가지로 b가 음수인 경우 b의 소수점 아래 값은 음수이므로 소수점 아래 값인 bb에 음수 표기를 남깁니다. 10을 소수점 아래 자릿수만큼 제곱한 값으로 저장합니다.
r68
227{{{#!if bs[0]==45
228{{{#!if bb="-"+bb
229}}}}}}
230
r76
231이때 rb를 계산합니다.
r65
232{{{#!if f=="+"
r76
233{{{#!if rb=(+ab)+(+bb)
r65
234}}}}}}
235{{{#!if f=="-"
r76
236{{{#!if rb=(+ab)-(+bb)
r65
237}}}}}}
r75
238
r69
239소수점 아래끼리 더한 자릿수가 얼마나 되는지 보기 위해 rb를 문자열로 바꿉니다.
r86
240이 때 rb가 0이 아닐 경우에만 문자열로 변환합니다.
241{{{#!if (+rb>0)||(+rb<0)
r69
242{{{#!if this.rb=rb.toString()
243}}}
r71
244문자열로 된 rb의 길이를 rp로 정의합니다.
r69
245{{{#!if this.rp=rb.length
246}}}
r86
247}}}
r94
248
r73
249rb가 음수이면 rb의 첫번째(0번 index)의 문자열에는 마이너스(-)가 들어갑니다. 이 때는 rp를 rb의 마이너스 문자열을 세지 않은 자릿수가 되도록 앞에서 정의했던 rb.length에서 1만큼 줄여 정의합니다. ap, bp는 마이너스를 붙이기 전에 값이 고정되어 있으므로 rp처럼 줄일 필요가 없습니다.
r69
250{{{#!if rb[0]==45
r70
251{{{#!if rp=rp-1
r69
252}}}}}}
r57
253
r94
254ru값이 어떤지 보고 각 경우 rb값이 어떠한가에 따라 rb만 정리하거나 rb와 ru 모두 정리합니다.
r149
255중복 처리를 막기 위해 초기화된 ps 변수 하나를 가져옵니다.
r111
256
257소수점 아래 값의 부호와 소수점 위의 값의 부호가 서로 다른 경우 계산을 하기 위해 값을 하나 정의합니다.
258
r235
259{{{#!if tv=+(("1"+pd).substr(0,ap+1))
r162
260}}}
r111
261
r75
262Case 1 : ru가 0보다 큰 경우
r71
263ru는 정수이므로 ru가 0보다 크면 곧 ru는 1 이상의 정수이며, 1 이상이면 a+b 또는 a-b가 양수+음수 꼴이 되더라도 소수점 아래 정리를 하면 됩니다. rb를 정리하는 과정에서 ru에서 1을 빌려오거나 ru에 1이 더해질 수도 있습니다. 앞에서 rb를 string으로 바꿨으므로 +rb를 다룹니다.
r65
264{{{#!if ru>0
r75
265Case 1-1 : rb가 0 이상인 경우
r232
266{{{#!if (+rb>=0)&&!ps
r73
267rb가 소수점 아래 자릿수를 초과하여 소수점 위의 수를 계산하게 생겼다면 ap=bp인 상황에서 rp>ap가 됩니다. rb는 첫 숫자가 1인 정수가 되므로 첫 숫자인 1을 삭제한 문자열로 정의합니다.
r71
268{{{#!if rp>ap
269{{{#!if ru=ru+1, rb=rb.substr(1, rp-1)
r69
270}}}}}}
r73
271rb가 소수점 아래 자릿수를 초과하지 않을 경우 rb를 다시 정의할 필요 없이 그대로 둡니다.
r71
272{{{#!if rp<=ap
r72
273}}}
r104
274{{{#!if ps=true
r73
275}}}
r104
276}}}
r73
277
r94
278Case 1-2 : rb가 음수인 경우 ru에서 1을 빌려옵니다. 1보다 작은 양수값에서 1보다 작은 양수값을 빼면 -1보다 작을 수 없으며, 소수점 아래 자릿수가 초과되지 않습니다.
r232
279{{{#!if (+rb<0)&&!ps
r73
280{{{#!if ru=ru-1
281}}}
r111
282소수점 아래 자릿수인 ap만큼 10을 제곱한 값(tv)을 rb에서 증가시켜 rb를 재정의합니다. 그러면 rb는 양수가 됩니다. 그리고 rb를 다시 문자열로 변환합니다.
283{{{#!if rb=tv+(+rb)
r73
284}}}{{{#!if rb=rb.toString()
285}}}
r104
286{{{#!if ps=true
287}}}}}}
r73
288정리과정을 끝냈으면 ru를 string으로 변환합니다.
289{{{#!if this.ru=ru.toString()
r71
290}}}}}}
291
r75
292Case 2 : ru가 0인 경우 ru가 0이 되면 rb의 값이 양수인지 음수인지에 따라 달라집니다.
r65
293{{{#!if ru==0
r75
294Case 2-1 : rb가 0 이상인 경우
r232
295{{{#!if (+rb>=0)&&!ps
r73
296rb가 양수이면서 rb가 자릿수를 초과한 경우 rb는 첫 숫자가 1인 정수가 되므로 첫 숫자인 1을 삭제한 문자열로 정의합니다.
297{{{#!if rp>ap
298{{{#!if ru=ru+1, rb=rb.substr(1, rp-1)
r104
299}}}}}}{{{#!if ps=true
300}}}}}}
r75
301Case 2-2 : rb가 음수인 경우
r232
302{{{#!if (+rb<0)&&!ps
r75
303rb가 음수이면서 rb가 자릿수를 초과한 경우 값이 0인 ru에 1을 빼야 합니다. 그리고 rb가 "-"+숫자 꼴이므로 문자열의 1번 index에 해당하는 1을 지워야 합니다. 앞에서 rb가 음수인 경우 rp는 rb의 마이너스(-)가 차지하는 자릿수를 계산하지 않은 값 곧 숫자들이 차지하는 자릿수이므로, rb를 길이가 rp-1인 숫자들로 다시 정의합니다.
r73
304{{{#!if rp>ap
r75
305{{{#!if ru=ru-1, rb=rb.substr(2, rp-1)
306}}}}}}
307rb가 자릿수를 초과하지 않은 경우 rb에서 "-"를 뺀 문자열로 rb를 다시 정의합니다.
r101
308{{{#!if rp<=ap
r76
309{{{#!if rb=rb.substr(1, rp)
r104
310}}}}}}{{{#!if ps=true
311}}}}}}
r73
312정리과정을 끝냈으면 ru를 string으로 변환합니다.
313{{{#!if this.ru=ru.toString()
r65
314}}}
r75
315-0.xxxx 같이 (ru==0인데) 연산결과가 -1보다 큰 음수로 나오는 경우 ru 문자열 앞에 "-"를 붙입니다.
316f가 "+"인지 "-"인지에 따라 처음 rb를 정의할 때 적었던 식을 다시 불러옵니다.
317{{{#!if ((f=="+")&&((+ab)+(+bb)<0))||((f=="-")&&((+ab)-(+bb)<0))
318{{{#!if ru="-"+ru
319}}}}}}
r73
320}}}
r74
321
r75
322Case 3 : ru가 0보다 작은 경우. 곧 -1 이하인 음수가 되는 경우.
r65
323{{{#!if ru<0
r76
324Case 3-1 : rb가 0 이하인 경우
r232
325{{{#!if (+rb<=0)&&!ps
r76
326rb가 음수이면서 자릿수를 초과한 경우 ru에 -1을 빼고, rb의 음수기호(-)와 첫번째 숫자인 문자열 "1"을 뺀 문자열로 rb를 다시 정의합니다.
327{{{#!if rp>ap
r80
328{{{#!if rb=rb.substr(2, rp-1)
r65
329}}}
r80
330}}}
r107
331rb가 자릿수를 초과하지 않은 경우 rp는 음수기호를 제외한 숫자 자릿수이므로 rb를 음수기호만을 뺀 문자열로 다시 정의합니다. 단, rb가 0이 되면 rp==1이 되므로 rb==0인 경우는 제외합니다.
r101
332{{{#!if (rp<=ap)&&(+rb<0)
r106
333{{{#!if rb=rb.substr(1, rp)
r104
334}}}}}}{{{#!if ps=true
335}}}}}}
r82
336Case 3-2 : rb가 0보다 큰 경우. 소수점 아래 부분을 보면 -1보다 큰 음수값에서 -1보다 큰 음수값을 빼면 1보다 클 수 없으며, 소수점 아래 자릿수가 초과되지 않습니다.
r232
337{{{#!if (+rb>0)&&!ps
r82
338ru<=-1이므로 ru+1를 해도 최대 0이 됩니다.
339{{{#!if ru=ru+1
r75
340}}}
r111
341rb>0에서 rb은 음수(계산결과)의 음수(마이너스값이 줄어듦)이므로 rb의 자릿수인 rp만큼 10을 제곱한 값(tv)에서 rb을 '''뺀''' 값으로 rb를 재정의합니다. 그러면 rb는 양수이지만 계산결과인 음수에 맞춘 값이 됩니다. 그리고 rb를 다시 문자열로 변환합니다. 변환합니다.
342{{{#!if rb=tv-(+rb)
r82
343}}}{{{#!if rb=rb.toString()
r104
344}}}{{{#!if ps=true
345}}}}}}
r76
346정리과정을 끝냈으면 ru를 string으로 변환합니다.
347{{{#!if this.ru=ru.toString()
348}}}
349-0.xxxx 같이 (ru==0인데) 연산결과가 -1보다 큰 음수로 나오는 경우가 된다면 ru 문자열 앞에 "-"를 붙입니다.
350{{{#!if +ru==0
351{{{#!if ru="-"+ru
352}}}}}}
353}}}
354여기까지가 소수점 아래 자릿수 숫자들의 계산과정입니다.
355}}}
r71
356
r94
357a와 b 모두 정수인 경우 ap, bp는 모두 0이 되므로 ru만을 그대로 문자열로 바꾸면 되며 소수점 아래(rb)는 표기해야 할 필요가 없으므로 rb="", (소수점 아래 자릿수)rp=0을 반환합니다.
358{{{#!if (ap==0)&&(bp==0)
359{{{#!if this.ru=ru.toString(), rb="", rp=0+0
360}}}}}}
361
r95
362rb==0인 경우 rb="", rp=0을 반환합니다.
363{{{#!if +rb==0
364{{{#!if rb="", rp=0+0
365}}}}}}
366
r99
367이제 rb=""이 아닌 경우 소수점 아래 숫자 정리를 합니다.
368rp를 rb의 문자열 길이로 다시 정의합니다.
r97
369{{{#!if rb!=""
370{{{#!if this.rp=rb.length
r103
371}}}
r97
372
r99
373+"000100"을 숫자로 바꾸면 100이 되는 문제가 있습니다. 이처럼 소수점 아래 자릿수를 연산한 결과를 문자열로 바꿨을 때 기존 소수점 아래 자릿수보다 작은 길이가 나오면 앞쪽에 0을 보충합니다.
374앞에서 ap,bp를 똑같이 맞췄으므로 ap를 가져옵니다. 자릿수가 모자랄 경우 0을 하나씩 보충합니다.
375{{{#!if rp<ap
r228
376{{{#!if rb=pd.substr(0,ap-rp)+rb
r99
377}}}}}}
378
379앞에 0을 채웠다면 이제, 소수점 아래로 나오는 숫자를 보고 마지막에서부터 0이 나오면 한 자리씩 지우는 과정을 시작합니다.
380
r164
381여기까지가 덧셈 또는 뺄셈연산의 계산과정이며 과정은 이후 rb 정리 과정으로 넘어갑니다.
r166
382}}}}}}
r76
383
r259
384##== 곱셈 & 나눗셈 ==
385##=== 숫자 초기화 ===
r186
386{{{#!if (f=="*")||(f=="/")
387곱셈 및 나눗셈 연산과정을 봅니다.
r64
38818자리 숫자로 입력할 수 있는 최대 정수는 999,999,999,999,999,999입니다.
389다행히 999,999,999,999,999,999*9=8,999,999,999,999,999,991 < long 한계치 9,223,372,036,854,775,807 이라서 a*각 자릿수로 덧셈해볼 수는 있습니다.
r120
390
r303
391a 또는 b가 음수가 될 경우 as 또는 bs 문자열은 "-" 기호가 붙으므로, 이것을 이용한 조건문을 하나 만들어 a와 b 둘의 부호가 서로 다를 경우 (a만 음수이거나 b가 음수일 경우) 계산 결과에 부호를 표시할 수 있게 만듭니다.
r293
392{{{#!if (as[0]==45)^(bs[0]==45)
r159
393{{{#!if ns="-"
394}}}}}}
r126
395a 또는 b가 음수가 될 경우 소수점 윗부분 문자열인 au 또는 bu에서 마이너스(-)를 제거합니다.
396{{{#!if au[0]==45
397{{{#!if au=au.substr(1,ad-1)
398}}}}}}
399{{{#!if bu[0]==45
400{{{#!if bu=bu.substr(1,bd-1)
401}}}}}}
402
r259
403##=== 자릿수 측정 ===
404나누는 자릿수에 맞춰 결과를 표시하고자 ac, bc를 자릿수를 나타내는 값으로 정의합니다.
405먼저 au는 앞에 적어놓은 0을 제거한 문자열이므로 +au>0인 경우 ac를 au의 문자열 길이에서 1을 뺀 값으로 정의합니다.
406{{{#!if +au>0
407{{{#!if ac=au.length-1
408}}}}}}
r302
409(au, ab 둘다 0인 경우 앞에 처리하는 식이 있고, au, ab 둘 중 하나라도 0이 아닐 때) au가 0이라면 ab는 단순 정수값으로 옮겼을 때 0보다 큰 값이 나옵니다. 소수점 아래 처음으로 0이 아닌 수가 나오는 자릿수를 구한 다음 덧셈 연산에서 그 수의 역원이 되는 수를 ac로 정의합니다. 이를 구하고자 ab의 뒤에 0을 더 붙여 18자리 숫자로 만든 다음 정수로 바꾸어 구합니다.
r259
410{{{#!if +au==0
411{{{#!if ac=ab+pd, ac=ac.substr(0,18), ac=+ac, ac=ac.toString(), ac=ac.length-19
412}}}}}}
r207
413
r259
414bc도 a와 같은 방법으로 정의합니다.
415{{{#!if +bu>0
416{{{#!if bc=bu.length-1
417}}}}}}{{{#!if +bu==0
418{{{#!if bc=bb+pd, bc=bc.substr(0,18), bc=+bc, bc=bc.toString(), bc=bc.length-19
419}}}}}}
420
421##=== 0인자 처리 ===
r186
422a 또는 b값이 0이 되려면 au, ab 둘 다 0이 되거나 bu, bb 둘 다 0이 되어야 합니다. a 또는 b 값이 0일 경우 당연히 음수 부호가 표시되지 않습니다.
r174
423{{{#!if ((+au==0)&&(+ab==0))||((+bu==0)&&(+bb==0))
r190
424곱셈에서 0을 곱하면 0이 되므로, 곱셈의 경우 a 또는 b가 0이 될 때 계산 결과에 0을 반환합니다.
425{{{#!if f=="*"
r159
426{{{#!if rs="", ru="0", rb="", ri="", rp=0, ns=""
r133
427}}}}}}
r190
428나눗셈에서 나누는 수(b)가 0이 될 경우 오류를 반환하고 ps=true를 걸어 나눗셈 연산이 되지 않게 만듭니다.
429{{{#!if f=="/"
430{{{#!if ((+bu==0)&&(+bb==0))
431error code 03 번 : 0으로 나눌 수 없습니다.
432{{{#!if eb=03, ps=true
433}}}}}}
434나누는 수가 0이 아니면서 나눌 대상이 0이 될 경우 곱셈에서 0을 곱하는 것처럼 계산 결과에 0을 반환합니다.
435{{{#!if ((+au==0)&&(+ab==0))&&((+bu!=0)||(+bb!=0))
436{{{#!if rs="", ru="0", rb="", ri="", rp=0, ns=""
437}}}}}}
r224
438}}}}}}
r198
439곱셈과 나눗셈에서 a와 b 모두 0이 아닌 경우를 봅니다.
r133
440{{{#!if ((+au!=0)||(+ab!=0))&&((+bu!=0)||(+bb!=0))
441
r264
442##=== 3차 초기화 ===
r203
443{{{#!if f=="*"
444곱셈계산에서 18자리씩 곱셈을 할 수 있도록 입력했던 a와 b의 문자열을 확장할 것입니다.
r198
445
r124
446a와 b 각각 소수점 윗자리와 소수점 아래자리의 문자열의 빈 공간을 0으로 채워 18자로 만듭니다.
447소수점 윗자리는 왼쪽에서 0을 채워나갑니다.
r228
448{{{#!if au = pd + au
r172
449+18자}}}{{{#!if au=au.substr(au.length-18,18)
r145
450}}}
r228
451{{{#!if bu = pd + bu
r172
452+18자}}}{{{#!if bu=bu.substr(bu.length-18,18)
r145
453}}}
r124
454
455소수점 아래자리는 오른쪽에서 0을 채웁니다. (ap, bp값은 보존됩니다.)
r228
456{{{#!if ab += pd
r145
457+18자}}}{{{#!if ab=ab.substr(0,18)
458}}}
r228
459{{{#!if bb += pd
r145
460+18자}}}{{{#!if bb=bb.substr(0,18)
r191
461}}}}}}
r203
462
463{{{#!if f=="/"
r204
464나눗셈은 소수점 위 18번째 자리부터 내려가면서 처음으로 0이 아닌 숫자가 있으면 그 숫자가 처음 숫자가 되도록 숫자를 왼쪽으로 밀어두려고 합니다. 그 다음 오른쪽을 0으로 채웁니다.
r267
465
466a에서 au가 0인 경우 18자리 au를 18자리 ab로 바꾸고 ab를 18자의 0(pd)으로 채웁니다.
467소수점 아래 자리를 매겼던 ab가 소수점 위인 au자리로 옮겨지게 되므로 정수로 바꾸었다 다시 문자열로 바꿈으로써 왼쪽에 불필요하게 붙어있는 0을 삭제합니다.
468{{{#!if +au==0
469{{{#!if au=ab, ab=pd, au=+au, au=au.toString()
470}}}}}}
471
r206
472au를 왼쪽으로 밀 경우 남게 되는 자릿수를 변수 tu로 둡니다. (후술할 아래 곱셈연산과 겹치지 않습니다.)
r228
473{{{#!if tu=18-au.length, au=au+ab.substr(0,tu)+pd, ab=ab.substr(tu)+pd, au=au.substr(0,18), ab=ab.substr(0,18)
r203
474}}}
r267
475
476b도 a와 같은 방법으로 초기화합니다.
477{{{#!if +bu==0
478{{{#!if bu=bb, bb=pd, bu=+bu, bu=bu.toString()
479}}}}}}
r228
480{{{#!if tu=18-bu.length, bu=bu+bb.substr(0,tu)+pd, bb=bb.substr(tu)+pd, bu=bu.substr(0,18), bb=bb.substr(0,18)
r203
481}}}
r207
482
r203
483}}}
r204
484}}}
r190
485여기까지 곱셈 또는 나눗셈에서 숫자를 초기화하는 과정입니다.
r224
486}}}
r133
487
r264
488##=== 곱셈 ===
r190
489a와 b 모두 0이 아닌 경우에서 곱셈을 연산하는 과정입니다.
490{{{#!if (f=="*")&&((+au!=0)||(+ab!=0))&&((+bu!=0)||(+bb!=0))
r149
491곱셈은 18자리를 끊어서 계산합니다. 소수점 아래 18자리의 아래인 제19~36번 자리를 ri로 둡니다. 소수점 위 19~36번째 자리는 rs로 두어 ri, rb, ru, rs 순으로 계산합니다.
r204
492소수점 위 18자리, 소수점 아래 18자리인 두 수를 곱하면 해당하는 자리별로 곱셈을 할 때 최대 (18+18)**2=1296회를 곱해야 합니다.
r135
493
r147
494앞으로 있을 계산은 다음과 같습니다.
r135
495 * ri를 더했더니 ri가 19자리 숫자로 넘치면 넘친 앞의 1자리를 rb로 넘깁니다.
r147
496 * rb가 19자리로 넘쳤다면 넘친 앞의 1자리를 ru로 넘깁니다.
497 * ru가 19자리로 넘친다면 넘친 앞의 1자리를 rs로 넘깁니다.
r135
498(rs는 상용로그로 보았을 때 log a<18, log b<18 에서 log (a*b) = log a + log b < 36이므로 19자리로 넘치지 않습니다.)
499문자열로 바꾸고 문자열을 쪼갠 다음 숫자로 바꾸는 과정입니다. 이를 if로 바꾸면 다음과 같습니다.
r149
500{{{#!if false
r135
501{{{#!if ri=ri.toString(), ri.length==19
r249
502{{{#!if rb=(+rb)+(+ri.substr(0,1)), ri=(+ri.substr(1,18))
r135
503}}}}}}
504{{{#!if rb=rb.toString(), rb.length==19
r249
505{{{#!if ru=(+ru)+(+rb.substr(0,1)), rb=(+rb.substr(1,18))
r135
506}}}}}}
507{{{#!if ru=ru.toString(), ru.length==19
r249
508{{{#!if rs=(+rs)+(+ru.substr(0,1)), ru=(+ru.substr(1,18))
r135
509}}}}}}
r149
510}}}
r151
511변수 tv, tw, i, ps를 가져옵니다. tw는 0, tv는 1, i는 0, ps는 false으로 초기화 된 채로 있습니다. 연산 과정 중간중간에 마지막 자릿수를 보정하고자 10씩 곱하게 됩니다. ri에서 최대 18자리에서 1자리 수를 곱하면 19자리가 될 수 있으므로 곱셈할 때마다 19자리로 넘칠때마다 넘치는 숫자는 rb로 넘깁니다.
r153
512ri부분을 합산합니다. ab*bb 의 절반을 처리합니다. (자릿수끼리 대입했을 때 처리되는 부분이 먼저 입력한 절반이 나중에 입력하는 절반보다 더 많지만, 편의상 절반이라고 적습니다.)
r149
513## for i=0 to 17
r151
514{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
515}}}{{{#!if tw=tw.toString(), tw.length==19
r150
516{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r232
517}}}}}}{{{#!if (tw.length<=18)&&!ps
r156
518{{{#!if ri=ri+(+tw)
r150
519}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
520{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r232
521}}}}}}{{{#!if (ri.length<=18)&&!ps
r150
522{{{#!if ri=(+ri)
r222
523}}}}}}{{{#!if i+=1, tv*=10, ps=false
r149
524}}}
r151
525## i=1
526{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
527}}}{{{#!if tw=tw.toString(), tw.length==19
r151
528{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r232
529}}}}}}{{{#!if (tw.length<=18)&&!ps
r156
530{{{#!if ri=ri+(+tw)
r151
531}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
532{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r232
533}}}}}}{{{#!if (ri.length<=18)&&!ps
r151
534{{{#!if ri=(+ri)
r222
535}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
536}}}
537## i=2
538{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
539}}}{{{#!if tw=tw.toString(), tw.length==19
r151
540{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r232
541}}}}}}{{{#!if (tw.length<=18)&&!ps
r156
542{{{#!if ri=ri+(+tw)
r151
543}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
544{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r232
545}}}}}}{{{#!if (ri.length<=18)&&!ps
r151
546{{{#!if ri=(+ri)
r222
547}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
548}}}
549## i=3
550{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
551}}}{{{#!if tw=tw.toString(), tw.length==19
r151
552{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r232
553}}}}}}{{{#!if (tw.length<=18)&&!ps
r156
554{{{#!if ri=ri+(+tw)
r151
555}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
556{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r232
557}}}}}}{{{#!if (ri.length<=18)&&!ps
r151
558{{{#!if ri=(+ri)
r222
559}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
560}}}
561## i=4
562{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
563}}}{{{#!if tw=tw.toString(), tw.length==19
r151
564{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r232
565}}}}}}{{{#!if (tw.length<=18)&&!ps
r156
566{{{#!if ri=ri+(+tw)
r151
567}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
568{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r232
569}}}}}}{{{#!if (ri.length<=18)&&!ps
r151
570{{{#!if ri=(+ri)
r222
571}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
572}}}
573## i=5
574{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
575}}}{{{#!if tw=tw.toString(), tw.length==19
r151
576{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r232
577}}}}}}{{{#!if (tw.length<=18)&&!ps
r156
578{{{#!if ri=ri+(+tw)
r151
579}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
580{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r232
581}}}}}}{{{#!if (ri.length<=18)&&!ps
r151
582{{{#!if ri=(+ri)
r222
583}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
584}}}
585## i=6
586{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
587}}}{{{#!if tw=tw.toString(), tw.length==19
r151
588{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r232
589}}}}}}{{{#!if (tw.length<=18)&&!ps
r156
590{{{#!if ri=ri+(+tw)
r151
591}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
592{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r232
593}}}}}}{{{#!if (ri.length<=18)&&!ps
r151
594{{{#!if ri=(+ri)
r222
595}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
596}}}
597## i=7
598{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
599}}}{{{#!if tw=tw.toString(), tw.length==19
r151
600{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r232
601}}}}}}{{{#!if (tw.length<=18)&&!ps
r156
602{{{#!if ri=ri+(+tw)
r151
603}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
604{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r232
605}}}}}}{{{#!if (ri.length<=18)&&!ps
r151
606{{{#!if ri=(+ri)
r222
607}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
608}}}
609## i=8
610{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
611}}}{{{#!if tw=tw.toString(), tw.length==19
r151
612{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r232
613}}}}}}{{{#!if (tw.length<=18)&&!ps
r156
614{{{#!if ri=ri+(+tw)
r151
615}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
616{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r232
617}}}}}}{{{#!if (ri.length<=18)&&!ps
r151
618{{{#!if ri=(+ri)
r222
619}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
620}}}
621## i=9
622{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
623}}}{{{#!if tw=tw.toString(), tw.length==19
r151
624{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r232
625}}}}}}{{{#!if (tw.length<=18)&&!ps
r156
626{{{#!if ri=ri+(+tw)
r151
627}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
628{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r232
629}}}}}}{{{#!if (ri.length<=18)&&!ps
r151
630{{{#!if ri=(+ri)
r222
631}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
632}}}
633## i=10
634{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
635}}}{{{#!if tw=tw.toString(), tw.length==19
r151
636{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r232
637}}}}}}{{{#!if (tw.length<=18)&&!ps
r156
638{{{#!if ri=ri+(+tw)
r151
639}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
640{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r232
641}}}}}}{{{#!if (ri.length<=18)&&!ps
r151
642{{{#!if ri=(+ri)
r222
643}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
644}}}
645## i=11
646{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
647}}}{{{#!if tw=tw.toString(), tw.length==19
r151
648{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r232
649}}}}}}{{{#!if (tw.length<=18)&&!ps
r156
650{{{#!if ri=ri+(+tw)
r151
651}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
652{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r232
653}}}}}}{{{#!if (ri.length<=18)&&!ps
r151
654{{{#!if ri=(+ri)
r222
655}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
656}}}
657## i=12
658{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
659}}}{{{#!if tw=tw.toString(), tw.length==19
r151
660{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r232
661}}}}}}{{{#!if (tw.length<=18)&&!ps
r156
662{{{#!if ri=ri+(+tw)
r151
663}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
664{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r232
665}}}}}}{{{#!if (ri.length<=18)&&!ps
r151
666{{{#!if ri=(+ri)
r222
667}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
668}}}
669## i=13
670{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
671}}}{{{#!if tw=tw.toString(), tw.length==19
r151
672{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r232
673}}}}}}{{{#!if (tw.length<=18)&&!ps
r156
674{{{#!if ri=ri+(+tw)
r151
675}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
676{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r232
677}}}}}}{{{#!if (ri.length<=18)&&!ps
r151
678{{{#!if ri=(+ri)
r222
679}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
680}}}
681## i=14
682{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
683}}}{{{#!if tw=tw.toString(), tw.length==19
r151
684{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r232
685}}}}}}{{{#!if (tw.length<=18)&&!ps
r156
686{{{#!if ri=ri+(+tw)
r151
687}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
688{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r232
689}}}}}}{{{#!if (ri.length<=18)&&!ps
r151
690{{{#!if ri=(+ri)
r222
691}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
692}}}
693## i=15
694{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
695}}}{{{#!if tw=tw.toString(), tw.length==19
r151
696{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r232
697}}}}}}{{{#!if (tw.length<=18)&&!ps
r156
698{{{#!if ri=ri+(+tw)
r151
699}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
700{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r232
701}}}}}}{{{#!if (ri.length<=18)&&!ps
r151
702{{{#!if ri=(+ri)
r222
703}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
704}}}
705## i=16
706{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
707}}}{{{#!if tw=tw.toString(), tw.length==19
r151
708{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r232
709}}}}}}{{{#!if (tw.length<=18)&&!ps
r156
710{{{#!if ri=ri+(+tw)
r151
711}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
712{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r232
713}}}}}}{{{#!if (ri.length<=18)&&!ps
r151
714{{{#!if ri=(+ri)
r222
715}}}}}}{{{#!if i+=1, tv*=10, ps=false
r151
716}}}
717## i=17
718{{{#!if tw=(+ab.substr(i,18-i))*(+bb.substr(17-i,1))*tv
r181
719}}}{{{#!if tw=tw.toString(), tw.length==19
r151
720{{{#!if rb=rb+(+tw.substr(0,1)), ri=ri+(+tw.substr(1,18)), ps=true
r232
721}}}}}}{{{#!if (tw.length<=18)&&!ps
r156
722{{{#!if ri=ri+(+tw)
r151
723}}}}}}{{{#!if ps=false, ri=ri.toString(), ri.length==19
724{{{#!if rb=rb+(+ri.substr(0,1)), ri=(+ri.substr(1,18)), ps=true
r232
725}}}}}}{{{#!if (ri.length<=18)&&!ps
r151
726{{{#!if ri=(+ri)
727}}}}}}
r134
728
r151
729##rb
r184
730rb부분을 합산합니다. substr(-1,0)은 빈 문자열 값이 나옵니다. (ab*bb의 나머지 절반 + au*bb의 절반), ab*bu의 절반을 처리합니다. i, tv, ps를 다시 초기화하고 시작합니다.
r151
731{{{#!if i=0+0, tv=1, ps=false
732}}}
733##for i=0 to 17
r185
734{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
735}}}{{{#!if tw=tw.toString(), tw.length==19
r152
736{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
737}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
738{{{#!if rb=rb+(+tw)
r152
739}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
740{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
741}}}}}}{{{#!if (rb.length<=18)&&!ps
r152
742{{{#!if rb=(+rb)
743}}}}}}
r176
744{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
745}}}{{{#!if tw=tw.toString(), tw.length==19
r152
746{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
747}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
748{{{#!if rb=rb+(+tw)
r152
749}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
750{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
751}}}}}}{{{#!if (rb.length<=18)&&!ps
r152
752{{{#!if rb=(+rb)
r222
753}}}}}}{{{#!if i+=1, tv*=10, ps=false
r152
754}}}
r153
755## i=1
r185
756{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
757}}}{{{#!if tw=tw.toString(), tw.length==19
r153
758{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
759}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
760{{{#!if rb=rb+(+tw)
r153
761}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
762{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
763}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
764{{{#!if rb=(+rb)
765}}}}}}
r176
766{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
767}}}{{{#!if tw=tw.toString(), tw.length==19
r153
768{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
769}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
770{{{#!if rb=rb+(+tw)
r153
771}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
772{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
773}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
774{{{#!if rb=(+rb)
r222
775}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
776}}}
777## i=2
r185
778{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
779}}}{{{#!if tw=tw.toString(), tw.length==19
r153
780{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
781}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
782{{{#!if rb=rb+(+tw)
r153
783}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
784{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
785}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
786{{{#!if rb=(+rb)
787}}}}}}
r176
788{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
789}}}{{{#!if tw=tw.toString(), tw.length==19
r153
790{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
791}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
792{{{#!if rb=rb+(+tw)
r153
793}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
794{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
795}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
796{{{#!if rb=(+rb)
r222
797}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
798}}}
799## i=3
r185
800{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
801}}}{{{#!if tw=tw.toString(), tw.length==19
r153
802{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
803}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
804{{{#!if rb=rb+(+tw)
r153
805}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
806{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
807}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
808{{{#!if rb=(+rb)
809}}}}}}
r176
810{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
811}}}{{{#!if tw=tw.toString(), tw.length==19
r153
812{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
813}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
814{{{#!if rb=rb+(+tw)
r153
815}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
816{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
817}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
818{{{#!if rb=(+rb)
r222
819}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
820}}}
821## i=4
r185
822{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
823}}}{{{#!if tw=tw.toString(), tw.length==19
r153
824{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
825}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
826{{{#!if rb=rb+(+tw)
r153
827}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
828{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
829}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
830{{{#!if rb=(+rb)
831}}}}}}
r176
832{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
833}}}{{{#!if tw=tw.toString(), tw.length==19
r153
834{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
835}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
836{{{#!if rb=rb+(+tw)
r153
837}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
838{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
839}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
840{{{#!if rb=(+rb)
r222
841}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
842}}}
843## i=5
r185
844{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
845}}}{{{#!if tw=tw.toString(), tw.length==19
r153
846{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
847}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
848{{{#!if rb=rb+(+tw)
r153
849}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
850{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
851}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
852{{{#!if rb=(+rb)
853}}}}}}
r176
854{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
855}}}{{{#!if tw=tw.toString(), tw.length==19
r153
856{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
857}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
858{{{#!if rb=rb+(+tw)
r153
859}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
860{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
861}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
862{{{#!if rb=(+rb)
r222
863}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
864}}}
865## i=6
r185
866{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
867}}}{{{#!if tw=tw.toString(), tw.length==19
r153
868{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
869}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
870{{{#!if rb=rb+(+tw)
r153
871}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
872{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
873}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
874{{{#!if rb=(+rb)
875}}}}}}
r176
876{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
877}}}{{{#!if tw=tw.toString(), tw.length==19
r153
878{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
879}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
880{{{#!if rb=rb+(+tw)
r153
881}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
882{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
883}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
884{{{#!if rb=(+rb)
r222
885}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
886}}}
887## i=7
r185
888{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
889}}}{{{#!if tw=tw.toString(), tw.length==19
r153
890{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
891}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
892{{{#!if rb=rb+(+tw)
r153
893}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
894{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
895}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
896{{{#!if rb=(+rb)
897}}}}}}
r176
898{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
899}}}{{{#!if tw=tw.toString(), tw.length==19
r153
900{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
901}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
902{{{#!if rb=rb+(+tw)
r153
903}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
904{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
905}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
906{{{#!if rb=(+rb)
r222
907}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
908}}}
909## i=8
r185
910{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
911}}}{{{#!if tw=tw.toString(), tw.length==19
r153
912{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
913}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
914{{{#!if rb=rb+(+tw)
r153
915}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
916{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
917}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
918{{{#!if rb=(+rb)
919}}}}}}
r176
920{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
921}}}{{{#!if tw=tw.toString(), tw.length==19
r153
922{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
923}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
924{{{#!if rb=rb+(+tw)
r153
925}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
926{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
927}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
928{{{#!if rb=(+rb)
r222
929}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
930}}}
931## i=9
r185
932{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
933}}}{{{#!if tw=tw.toString(), tw.length==19
r153
934{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
935}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
936{{{#!if rb=rb+(+tw)
r153
937}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
938{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
939}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
940{{{#!if rb=(+rb)
941}}}}}}
r176
942{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
943}}}{{{#!if tw=tw.toString(), tw.length==19
r153
944{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
945}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
946{{{#!if rb=rb+(+tw)
r153
947}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
948{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
949}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
950{{{#!if rb=(+rb)
r222
951}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
952}}}
953## i=10
r185
954{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
955}}}{{{#!if tw=tw.toString(), tw.length==19
r153
956{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
957}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
958{{{#!if rb=rb+(+tw)
r153
959}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
960{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
961}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
962{{{#!if rb=(+rb)
963}}}}}}
r176
964{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
965}}}{{{#!if tw=tw.toString(), tw.length==19
r153
966{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
967}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
968{{{#!if rb=rb+(+tw)
r153
969}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
970{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
971}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
972{{{#!if rb=(+rb)
r222
973}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
974}}}
975## i=11
r185
976{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
977}}}{{{#!if tw=tw.toString(), tw.length==19
r153
978{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
979}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
980{{{#!if rb=rb+(+tw)
r153
981}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
982{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
983}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
984{{{#!if rb=(+rb)
985}}}}}}
r176
986{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
987}}}{{{#!if tw=tw.toString(), tw.length==19
r153
988{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
989}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
990{{{#!if rb=rb+(+tw)
r153
991}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
992{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
993}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
994{{{#!if rb=(+rb)
r222
995}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
996}}}
997## i=12
r185
998{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
999}}}{{{#!if tw=tw.toString(), tw.length==19
r153
1000{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
1001}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1002{{{#!if rb=rb+(+tw)
r153
1003}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
1004{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
1005}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
1006{{{#!if rb=(+rb)
1007}}}}}}
r176
1008{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
1009}}}{{{#!if tw=tw.toString(), tw.length==19
r153
1010{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
1011}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1012{{{#!if rb=rb+(+tw)
r153
1013}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
1014{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
1015}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
1016{{{#!if rb=(+rb)
r222
1017}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
1018}}}
1019## i=13
r185
1020{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
1021}}}{{{#!if tw=tw.toString(), tw.length==19
r153
1022{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
1023}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1024{{{#!if rb=rb+(+tw)
r153
1025}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
1026{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
1027}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
1028{{{#!if rb=(+rb)
1029}}}}}}
r176
1030{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
1031}}}{{{#!if tw=tw.toString(), tw.length==19
r153
1032{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
1033}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1034{{{#!if rb=rb+(+tw)
r153
1035}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
1036{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
1037}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
1038{{{#!if rb=(+rb)
r222
1039}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
1040}}}
1041## i=14
r185
1042{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
1043}}}{{{#!if tw=tw.toString(), tw.length==19
r153
1044{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
1045}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1046{{{#!if rb=rb+(+tw)
r153
1047}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
1048{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
1049}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
1050{{{#!if rb=(+rb)
1051}}}}}}
r176
1052{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
1053}}}{{{#!if tw=tw.toString(), tw.length==19
r153
1054{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
1055}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1056{{{#!if rb=rb+(+tw)
r153
1057}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
1058{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
1059}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
1060{{{#!if rb=(+rb)
r222
1061}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
1062}}}
1063## i=15
r185
1064{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
1065}}}{{{#!if tw=tw.toString(), tw.length==19
r153
1066{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
1067}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1068{{{#!if rb=rb+(+tw)
r153
1069}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
1070{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
1071}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
1072{{{#!if rb=(+rb)
1073}}}}}}
r176
1074{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
1075}}}{{{#!if tw=tw.toString(), tw.length==19
r153
1076{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
1077}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1078{{{#!if rb=rb+(+tw)
r153
1079}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
1080{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
1081}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
1082{{{#!if rb=(+rb)
r222
1083}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
1084}}}
1085## i=16
r185
1086{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
1087}}}{{{#!if tw=tw.toString(), tw.length==19
r153
1088{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
1089}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1090{{{#!if rb=rb+(+tw)
r153
1091}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
1092{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
1093}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
1094{{{#!if rb=(+rb)
1095}}}}}}
r176
1096{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
1097}}}{{{#!if tw=tw.toString(), tw.length==19
r153
1098{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
1099}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1100{{{#!if rb=rb+(+tw)
r153
1101}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
1102{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
1103}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
1104{{{#!if rb=(+rb)
r222
1105}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
1106}}}
1107## i=17
r185
1108{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bb.substr(17-i,1))
r181
1109}}}{{{#!if tw=tw.toString(), tw.length==19
r153
1110{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
1111}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1112{{{#!if rb=rb+(+tw)
r153
1113}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
1114{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
1115}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
1116{{{#!if rb=(+rb)
1117}}}}}}
r176
1118{{{#!if ps=false, tw=(+ab.substr(i,18-i))*(+bu.substr(17-i,1))*tv
r181
1119}}}{{{#!if tw=tw.toString(), tw.length==19
r153
1120{{{#!if ru=ru+(+tw.substr(0,1)), rb=rb+(+tw.substr(1,18)), ps=true
r232
1121}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1122{{{#!if rb=rb+(+tw)
r153
1123}}}}}}{{{#!if ps=false, rb=rb.toString(), rb.length==19
1124{{{#!if ru=ru+(+rb.substr(0,1)), rb=(+rb.substr(1,18)), ps=true
r232
1125}}}}}}{{{#!if (rb.length<=18)&&!ps
r153
1126{{{#!if rb=(+rb)
r222
1127}}}}}}{{{#!if i+=1, tv*=10, ps=false
r153
1128}}}
r134
1129
r153
1130##ru
r184
1131ru부분을 합산합니다. substr(-1,0)은 빈 문자열 값이 나옵니다. (ab*bu의 나머지 절반 + au*bu의 절반), au*bb의 나머지 절반을 처리합니다. i, tv, ps를 다시 초기화하고 시작합니다.
r153
1132{{{#!if i=0+0, tv=1, ps=false
1133}}}
r155
1134##for i=0 to 17
r185
1135{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1136}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1137{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r232
1138}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1139{{{#!if ru=ru+(+tw)
1140}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1141{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1142}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1143{{{#!if ru=(+ru)
1144}}}}}}
r184
1145{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1146}}}{{{#!if ru.length==19
r155
1147{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1148}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1149{{{#!if ru=(+ru)
r222
1150}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1151}}}
1152## i=1
r185
1153{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1154}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1155{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r232
1156}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1157{{{#!if ru=ru+(+tw)
1158}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1159{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1160}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1161{{{#!if ru=(+ru)
1162}}}}}}
r184
1163{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1164}}}{{{#!if ru.length==19
r155
1165{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1166}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1167{{{#!if ru=(+ru)
r222
1168}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1169}}}
1170## i=2
r185
1171{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1172}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1173{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r232
1174}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1175{{{#!if ru=ru+(+tw)
1176}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1177{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1178}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1179{{{#!if ru=(+ru)
1180}}}}}}
r184
1181{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1182}}}{{{#!if ru.length==19
r155
1183{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1184}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1185{{{#!if ru=(+ru)
r222
1186}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1187}}}
1188## i=3
r185
1189{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1190}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1191{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r232
1192}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1193{{{#!if ru=ru+(+tw)
1194}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1195{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1196}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1197{{{#!if ru=(+ru)
1198}}}}}}
r184
1199{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1200}}}{{{#!if ru.length==19
r155
1201{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1202}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1203{{{#!if ru=(+ru)
r222
1204}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1205}}}
1206## i=4
r185
1207{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1208}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1209{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r232
1210}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1211{{{#!if ru=ru+(+tw)
1212}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1213{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1214}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1215{{{#!if ru=(+ru)
1216}}}}}}
r184
1217{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1218}}}{{{#!if ru.length==19
r155
1219{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1220}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1221{{{#!if ru=(+ru)
r222
1222}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1223}}}
1224## i=5
r185
1225{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1226}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1227{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r232
1228}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1229{{{#!if ru=ru+(+tw)
1230}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1231{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1232}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1233{{{#!if ru=(+ru)
1234}}}}}}
r184
1235{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1236}}}{{{#!if ru.length==19
r155
1237{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1238}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1239{{{#!if ru=(+ru)
r222
1240}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1241}}}
1242## i=6
r185
1243{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1244}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1245{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r232
1246}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1247{{{#!if ru=ru+(+tw)
1248}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1249{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1250}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1251{{{#!if ru=(+ru)
1252}}}}}}
r184
1253{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1254}}}{{{#!if ru.length==19
r155
1255{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1256}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1257{{{#!if ru=(+ru)
r222
1258}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1259}}}
1260## i=7
r185
1261{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1262}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1263{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r232
1264}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1265{{{#!if ru=ru+(+tw)
1266}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1267{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1268}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1269{{{#!if ru=(+ru)
1270}}}}}}
r184
1271{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1272}}}{{{#!if ru.length==19
r155
1273{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1274}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1275{{{#!if ru=(+ru)
r222
1276}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1277}}}
1278## i=8
r185
1279{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1280}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1281{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r232
1282}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1283{{{#!if ru=ru+(+tw)
1284}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1285{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1286}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1287{{{#!if ru=(+ru)
1288}}}}}}
r184
1289{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1290}}}{{{#!if ru.length==19
r155
1291{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1292}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1293{{{#!if ru=(+ru)
r222
1294}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1295}}}
1296## i=9
r185
1297{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1298}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1299{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r232
1300}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1301{{{#!if ru=ru+(+tw)
1302}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1303{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1304}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1305{{{#!if ru=(+ru)
1306}}}}}}
r184
1307{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1308}}}{{{#!if ru.length==19
r155
1309{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1310}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1311{{{#!if ru=(+ru)
r222
1312}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1313}}}
1314## i=10
r185
1315{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1316}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1317{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r232
1318}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1319{{{#!if ru=ru+(+tw)
1320}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1321{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1322}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1323{{{#!if ru=(+ru)
1324}}}}}}
r184
1325{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1326}}}{{{#!if ru.length==19
r155
1327{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1328}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1329{{{#!if ru=(+ru)
r222
1330}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1331}}}
1332## i=11
r185
1333{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1334}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1335{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r232
1336}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1337{{{#!if ru=ru+(+tw)
1338}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1339{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1340}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1341{{{#!if ru=(+ru)
1342}}}}}}
r184
1343{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1344}}}{{{#!if ru.length==19
r155
1345{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1346}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1347{{{#!if ru=(+ru)
r222
1348}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1349}}}
1350## i=12
r185
1351{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1352}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1353{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r232
1354}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1355{{{#!if ru=ru+(+tw)
1356}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1357{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1358}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1359{{{#!if ru=(+ru)
1360}}}}}}
r184
1361{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1362}}}{{{#!if ru.length==19
r155
1363{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1364}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1365{{{#!if ru=(+ru)
r222
1366}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1367}}}
1368## i=13
r185
1369{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1370}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1371{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r232
1372}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1373{{{#!if ru=ru+(+tw)
1374}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1375{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1376}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1377{{{#!if ru=(+ru)
1378}}}}}}
r184
1379{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1380}}}{{{#!if ru.length==19
r155
1381{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1382}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1383{{{#!if ru=(+ru)
r222
1384}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1385}}}
1386## i=14
r185
1387{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1388}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1389{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r232
1390}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1391{{{#!if ru=ru+(+tw)
1392}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1393{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1394}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1395{{{#!if ru=(+ru)
1396}}}}}}
r184
1397{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1398}}}{{{#!if ru.length==19
r155
1399{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1400}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1401{{{#!if ru=(+ru)
r222
1402}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1403}}}
1404## i=15
r185
1405{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1406}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1407{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r232
1408}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1409{{{#!if ru=ru+(+tw)
1410}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1411{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1412}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1413{{{#!if ru=(+ru)
1414}}}}}}
r184
1415{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1416}}}{{{#!if ru.length==19
r155
1417{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1418}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1419{{{#!if ru=(+ru)
r222
1420}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1421}}}
1422## i=16
r185
1423{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1424}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1425{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r232
1426}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1427{{{#!if ru=ru+(+tw)
1428}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1429{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1430}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1431{{{#!if ru=(+ru)
1432}}}}}}
r184
1433{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1434}}}{{{#!if ru.length==19
r155
1435{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1436}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1437{{{#!if ru=(+ru)
r222
1438}}}}}}{{{#!if i+=1, tv*=10, ps=false
r155
1439}}}
1440## i=17
r185
1441{{{#!if ps=false, tw=+(au.substr(i,18-i)+ab.substr(0,i)), tw=tw*(+bu.substr(17-i,1))
r181
1442}}}{{{#!if tw=tw.toString(), tw.length==19
r155
1443{{{#!if rs=rs+(+tw.substr(0,1)), ru=ru+(+tw.substr(1,18)), ps=true
r232
1444}}}}}}{{{#!if (tw.length<=18)&&!ps
r155
1445{{{#!if ru=ru+(+tw)
1446}}}}}}{{{#!if ps=false, ru=ru.toString(), ru.length==19
1447{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1448}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1449{{{#!if ru=(+ru)
1450}}}}}}
r184
1451{{{#!if ps=false, tw=(+au.substr(0,i))*(+bb.substr(17-i,1)), ru=ru+(+tw), ru=ru.toString()
1452}}}{{{#!if ru.length==19
r155
1453{{{#!if rs=rs+(+ru.substr(0,1)), ru=(+ru.substr(1,18)), ps=true
r232
1454}}}}}}{{{#!if (ru.length<=18)&&!ps
r155
1455{{{#!if ru=(+ru)
r222
1456}}}}}}{{{#!if i+=1, tv*=10, ps=false
r184
1457}}}
r156
1458##rs
1459rs부분을 합산합니다. au*bu의 나머지 절반을 처리합니다. i, tv, ps를 다시 초기화하고 시작합니다. 소수점 윗자리는 많아야 36자리이므로 rs에서 더 이상 넘치지 않습니다.
1460{{{#!if i=0+0, tv=1, ps=false
1461}}}
1462##for i=0 to 17
r184
1463{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1464}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1465}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1466}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1467}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1468}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1469}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1470}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1471}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1472}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
r156
1473}}}
r184
1474{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1475}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1476}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1477}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1478}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1479}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1480}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
1481}}}{{{#!if tw=(+au.substr(0,i))*(+bu.substr(17-i,1)), rs=rs+tw, i+=1
r156
1482}}}
r190
1483여기까지가 곱셈에서 a*b 의 연산 과정이며 rb 정리 부분으로 넘어갑니다.
r164
1484}}}
1485
r261
1486##=== 나눗셈 ===
r194
1487a와 b 모두 0이 아닌 경우에서 나눗셈을 연산하는 과정입니다.
1488{{{#!if (f=="/")&&((+au!=0)||(+ab!=0))&&((+bu!=0)||(+bb!=0))
1489
1490au, ab, bu, bb를 18자로 만들었으므로 36자리 정수의 나눗셈으로 봅니다.
1491a/b=(au+ab)/(bu+bb)=(+(au.substr(0,18)+ab.substr(0,18)))/(+(bu.substr(0,18)+bb.substr(0,18)))와 같습니다.
r195
1492
r229
1493##몫 서술
1494제일 높은 자리부터 내려오면서 처음으로 0이 아닌 수를 왼쪽으로 당기는 과정을 거쳤으므로 (1부터 시작하는 18자리+18자리 숫자)/(1부터 시작하는 18자리+18자리 수) 연산이 됩니다.
1495
1496{{{#!if ps=false
1497}}}숫자에서 해당하는 (10**n) 자리에 몫을 더 이상 계산하지 않고 그 다음 자리(10**(n+1))의 몫을 계산하게 된다면 ps를 true로 바꿉니다.
1498
1499##i=0
1500{{{#!if br=false
1501}}}다시 정렬된 bu, bb의 값은 바뀌지 않습니다. bu, bb로 나눈 몫만큼 au, ab에서 감소시킨 다음 au와 ab를 다시 정렬시키며, au와 ab가 모두 0이 되면 더 이상 계산하지 않도록 br를 true로 반환합니다.
r230
1502그 다음 계산을 편하게 할 수 있도록 텍스트값으로 된 au, ab, bu, bb를 정수값으로 변환합니다.
r291
1503{{{#!if au=+au, ab=+ab, bu=+bu, bb=+bb
r230
1504}}}
r229
1505
r281
1506변수 ps(logical)를 false로 초기화한 다음 변수 ps를 가져옵니다. au의 값이 bu보다 작거나, au==bu이더라도 ab<bb이면 해당하는 자릿수의 몫이 0이라는 의미이므로 변수 ps를 true로 바꾸고 다음 자릿수로 넘깁니다.
r249
1507{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
1508{{{#!if ps=true
r229
1509}}}}}}
r281
1510ps==true가 되려면 ① au>bu이거나, ② au==bu이고 ab>=bb인 경우입니다. !ps(다음 자릿수로 계산을 넘기지 않음)임을 if 조건문으로 둔 상태에서 진행합니다.
r241
1511{{{#!if !ps
r230
1512au를 bu로 나눈 몫을 tw로 정의합니다. 정수를 정수로 나누면 몫만 계산되며, 100,000,000,000,000,000 이상 999,999,999 999,999,999 이하의 한 정수를 100,000,000,000,000,000 이상의 다른 한 정수로 나눈 몫이므로 tw의 값은 최소 0 최대 9가 됩니다.
1513{{{#!if tw=au/bu
1514}}}
1515bu, bb를 각각 tw만큼 곱한 값을 tx, ty로 정의합니다.
1516{{{#!if tx=bu*tw, ty=bb*tw
1517}}}
r231
1518이 때 ty가 19자리가 되면 넘친 첫번째 자리의 값을 tx의 일의 자리로 더하고 아래 18자리의 값을 ty로 다시 정의합니다. tx는 19자리 숫자가 되어도 문제가 없습니다.
1519{{{#!if ty=ty.toString(), ty.length==19
r239
1520{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
r231
1521}}}}}}
1522이렇게 하면 tx=bu*tw<=au가 됩니다. (bu가 au보다 크면 tw는 tw의 정의에서 값이 0이 되므로 부등호가 성립됩니다.)
r239
1523ty를 정수로 바꿉니다.
1524{{{#!if ty=+ty
1525}}}
r231
1526(2.1/1.6 처럼) ty가 넘쳐 tx 값이 더해지는 경우가 있으므로 몫이 유효한 값인지 검산합니다. 만일 tx ty 가 기존 au ab을 넘게 되면 tw에서 1을 빼고, tx, ty를 다시 정의합니다.
1527{{{#!if (tx>au)||((tx==au)&&(ty>ab))
1528{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
1529}}}
1530마찬가지로 ty가 19자리가 된다면 넘친 첫번째 자리의 값을 tx의 일의 자리로 더합니다.
1531{{{#!if ty=ty.toString(), ty.length==19
r239
1532{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1533}}}}}}
1534ty를 정수로 바꿉니다.
1535{{{#!if ty=+ty
1536}}}
1537}}}
r231
1538이렇게 만들어진 tx, ty가 있으면 이를 반영합니다.
1539}}}
r253
1540ps일 경우 해당 자리의 몫(tw)을 0으로 처리합니다.
r231
1541{{{#!if ps
r253
1542{{{#!if tw=0
r231
1543}}}}}}
r258
1544!ps일 경우 au에서 tx를, ab에서 ty를 뺍니다. 만약 ty>ab일 경우 au에서 1을 가져와 (au에서 1을 빼고) ab에 1,000,000,000,000,000,000을 더한 다음 계산합니다.
r231
1545{{{#!if !ps
r233
1546{{{#!if ty>ab
r234
1547{{{#!if au-=1, ab+=+("1"+pd)
r231
1548}}}}}}
r233
1549{{{#!if au-=tx, ab-=ty
1550}}}}}}
r253
1551몫인 tw를 문자열로 바꾸고 tm의 오른쪽에 더합니다.
1552{{{#!if tw=tw.toString(), tm+=tw
1553}}}
r241
1554au, ab에서 몫을 빼고 나니 au, ab가 모두 0으로 된다면 더 이상 계산을 하지 않아야 하므로 br를 true로 반환합니다.
1555{{{#!if (au==0)&&(ab==0)
r233
1556{{{#!if br=true
1557}}}}}}
r241
1558어느 하나가 0이 되지 않는다면 br는 여전히 false이므로 !br일 때 자릿수를 옮깁니다.
1559{{{#!if !br
r233
1560au, ab를 문자열로 다시 바꿉니다.
1561{{{#!if au=au.toString(), ab=ab.toString()
1562}}}
r234
1563tn을 빈 문자열로 초기화합니다. 그리고 역할을 다 한 ps를 false로 초기화합니다. 그 다음 au가 여전히 18자리 숫자일 경우 au의 첫번째 자리를 분리해 내어 tn으로 정의합니다. 여기서 ps는 au의 길이에 따른 처리가 겹쳐지지 않게 만듭니다.
r252
1564{{{#!if ps=false, tn="", au.length==18
1565{{{#!if tn=au.substr(0,1), au=au.substr(1,17), ps=true
r233
1566}}}}}}
r252
1567au가 17자리 미만의 숫자가 되었다면 au의 왼쪽을 0으로 채워 18자리 숫자로 만듭니다.
1568{{{#!if !ps&&(au.length<17)
1569{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r234
1570}}}}}}
1571ab가 18자리 미만의 숫자가 되었다면 왼쪽을 0으로 채워 18자리 숫자로 만듭니다.
1572{{{#!if ab.length<18
1573{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
1574}}}}}}
1575au의 뒤로 ab의 처음 자리를 끌어옵니다.
1576{{{#!if au+=ab.substr(0,1)
r233
1577}}}
r234
1578ab의 나머지 17자리를 앞으로 당긴 다음 "0"을 더합니다.
1579{{{#!if ab=ab.substr(1,17)+"0"
r241
1580}}}
1581여기까지가 자릿수를 한 칸씩 옮기는 과정입니다.
1582}}}
r234
1583##i=1 part 1
r239
1584몫으로 기록할 숫자의 첫번째 자리를 구했다면, 그 다음 자리의 숫자를 찾기 위해 (변수 tn으로 만들 수 있는 여분의 1자리 +) 18자리 + 18자리 숫자를 18자리+18자리 숫자로 나누는 계산을 합니다. tn이 9가 될 경우 9로 시작하는 19자리 숫자를 long integer로 모두 표현할 수 없으므로 10**18 자리부터 먼저 계산합니다. 10**18의 1번째 숫자의 몫을 구한 다음 나머지를 18자리 숫자에 더하는 과정(part 1)을 거친 다음 그 18자리에서 몫을 구하는 과정(part 2)을 거칩니다.
r235
1585
r240
1586au와 ab를 정수로 다시 바꾸고 tz를 0으로 초기화합니다. 그리고 tn이 빈 문자열이 아니라면 (앞에 au에서 한 자리 수를 떼온 것이므로) tn에 0을 더하여 19자리로 만들고 몫을 구합니다.
1587{{{#!if au=+au, ab=+ab, tz=0, tn!=""
r239
1588tn을 19자리 정수로 바꿉니다.
1589{{{#!if tn+=pd, tn=+tn,
r235
1590}}}
1591tz를 몫으로 정의합니다. 앞의 tw를 처리하는 방법과 같습니다. tn을 정수로 만들었으므로 소수점 아래를 비교한다면 정수의 소수점 아래에 해당하는 0과 비교합니다.
1592{{{#!if tz=tn/bu, tx=bu*tz, ty=bb*tz
1593}}}{{{#!if ty=ty.toString(), ty.length==19
r239
1594{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
r235
1595}}}}}}
r239
1596{{{#!if ty=+ty
1597}}}
r235
1598{{{#!if (tx>tn)||((tx==tn)&&(ty>0))
1599{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
1600}}}{{{#!if ty=ty.toString(), ty.length==19
r239
1601{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1602}}}}}}
1603{{{#!if ty=+ty
1604}}}}}}
r238
1605tn에서 나누어떨어지는 값을 뺀 나머지를 반영하여 au, ab에 더합니다. 소수점 아래 부분인 ab보다 ty가 크다면 tn에서 1을 빼어 계산합니다.
r237
1606{{{#!if ty>ab
1607{{{#!if tn-=1, ab+=+("1"+pd)
r236
1608}}}}}}
r237
1609{{{#!if au+=(tn-tx), ab-=ty
r234
1610}}}
r237
1611tn을 빈 문자열로 초기화합니다.
1612{{{#!if tn=""
1613}}}
1614}}}
r234
1615##i=1 part 2
r239
1616br(0으로 나누어떨어짐) 이 걸려있으면 실행하지 않습니다. 그러므로 전체적으로 조건을 !br로 둔 다음 계산을 진행합니다.
r238
1617{{{#!if !br
r239
1618ps를 false로 초기화한 다음 앞에서 했던 처리와 동일하게 진행합니다.
r249
1619{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r283
1620"ps일 경우 tw를 0으로 처리하는 과정"을 여기로 병합합니다.
r253
1621{{{#!if ps=true, tw=0
r239
1622}}}}}}
r241
1623{{{#!if !ps
r239
1624tw, tx, ty를 정의하고 처리하는 과정은 앞자리에서 몫을 찾는 과정과 동일합니다. 앞에서 이미 au, ab를 정수로 만들었으므로 여기에 au, ab를 정수로 만드는 처리를 할 필요가 없습니다.
1625{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
r240
1626}}}{{{#!if ty=ty.toString(), ty.length==19
1627{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1628}}}}}}
1629ty를 정수로 바꾸는 과정을 아래 if 조건문으로 병합합니다.
1630{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
1631{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
1632}}}{{{#!if ty=ty.toString(), ty.length==19
1633{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1634}}}}}}{{{#!if ty=+ty
1635}}}}}}
r253
1636{{{#!if ty>ab
r240
1637{{{#!if au-=1, ab+=+("1"+pd)
1638}}}}}}{{{#!if au-=tx, ab-=ty
r254
1639}}}}}}
1640앞에서 계산된 tz의 값을 tw에 더한 다음 tw를 문자열로 바꿉니다. 그리고 tm에 문자열로 바꾼 tw을 더합니다.
r253
1641{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
1642}}}
r281
1643au와 ab가 모두 0이 될 때 br를 true로 정의합니다.
r241
1644{{{#!if (au==0)&&(ab==0)
1645{{{#!if br=true
r240
1646}}}}}}}}}
1647어느 자릿수부터 br가 true로 되면 이후 자릿수 옮겨 몫을 구하는 과정이나 나머지를 정리하는 과정을 더 이상 할 필요가 없습니다.
r241
1648{{{#!if !br
r240
1649au, ab를 문자열로 다시 바꾸고 처리하는 과정은 동일합니다.
1650{{{#!if au=au.toString(), ab=ab.toString()
r239
1651}}}
r252
1652ps를 au 자릿수가 18이 되었을 때 true가 되는 논리값으로 정의합니다.
1653{{{#!if tn="", ps=(au.length==18), ps
1654{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
r240
1655}}}}}}
r252
1656{{{#!if !ps&&(au.length<17)
1657{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r240
1658}}}}}}
1659{{{#!if ab.length<18
1660{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
1661}}}}}}
1662{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r239
1663}}}
r240
1664}}}
1665##i=2
r242
1666이후부터 과정은 동일합니다. 많아야 소수점 위 36자리, 소수점 아래 36자리 모두를 쓰면 72개이므로 총 72회(for i=0 to i=71)를 진행합니다.
r240
1667{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
1668{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
1669}}}{{{#!if ty=ty.toString(), ty.length==19
1670{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1671}}}}}}
1672{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
1673{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
1674}}}{{{#!if ty=ty.toString(), ty.length==19
1675{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1676}}}}}}{{{#!if ty=+ty
1677}}}}}}
1678{{{#!if ty>ab
1679{{{#!if tn-=1, ab+=+("1"+pd)
1680}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
r241
1681}}}}}}
1682{{{#!if !br
r249
1683{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r255
1684{{{#!if ps=true, tw=0
r241
1685}}}}}}
1686{{{#!if !ps
1687{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
1688}}}{{{#!if ty=ty.toString(), ty.length==19
1689{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1690}}}}}}
1691{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
1692{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
1693}}}{{{#!if ty=ty.toString(), ty.length==19
1694{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1695}}}}}}{{{#!if ty=+ty
1696}}}}}}
r255
1697{{{#!if ty>ab
r241
1698{{{#!if au-=1, ab+=+("1"+pd)
1699}}}}}}{{{#!if au-=tx, ab-=ty
r255
1700}}}}}}
1701{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r240
1702}}}
r241
1703{{{#!if (au==0)&&(ab==0)
1704{{{#!if br=true
r256
1705}}}}}}}}}
r241
1706{{{#!if !br
1707{{{#!if au=au.toString(), ab=ab.toString()
r252
1708}}}{{{#!if tn="", ps=(au.length==18), ps
1709{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
1710}}}}}}{{{#!if !ps&&(au.length<17)
1711{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r241
1712}}}}}}{{{#!if ab.length<18
1713{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
1714}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
1715}}}}}}
r242
1716##i=3
1717{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
1718{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
1719}}}{{{#!if ty=ty.toString(), ty.length==19
1720{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1721}}}}}}
1722{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
1723{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
1724}}}{{{#!if ty=ty.toString(), ty.length==19
1725{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1726}}}}}}{{{#!if ty=+ty
1727}}}}}}
1728{{{#!if ty>ab
1729{{{#!if tn-=1, ab+=+("1"+pd)
1730}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
1731}}}}}}
1732{{{#!if !br
r249
1733{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
1734{{{#!if ps=true, tw=0
r242
1735}}}}}}
1736{{{#!if !ps
1737{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
1738}}}{{{#!if ty=ty.toString(), ty.length==19
1739{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1740}}}}}}
1741{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
1742{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
1743}}}{{{#!if ty=ty.toString(), ty.length==19
1744{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1745}}}}}}{{{#!if ty=+ty
1746}}}}}}
r256
1747{{{#!if ty>ab
r242
1748{{{#!if au-=1, ab+=+("1"+pd)
1749}}}}}}{{{#!if au-=tx, ab-=ty
r256
1750}}}}}}
1751{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r242
1752}}}
1753{{{#!if (au==0)&&(ab==0)
1754{{{#!if br=true
1755}}}}}}}}}
1756{{{#!if !br
1757{{{#!if au=au.toString(), ab=ab.toString()
r252
1758}}}{{{#!if tn="", ps=(au.length==18), ps
1759{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
1760}}}}}}{{{#!if !ps&&(au.length<17)
1761{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r242
1762}}}}}}{{{#!if ab.length<18
1763{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
1764}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
1765}}}}}}
r242
1766##i=4
1767{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
1768{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
1769}}}{{{#!if ty=ty.toString(), ty.length==19
1770{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1771}}}}}}
1772{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
1773{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
1774}}}{{{#!if ty=ty.toString(), ty.length==19
1775{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1776}}}}}}{{{#!if ty=+ty
1777}}}}}}
1778{{{#!if ty>ab
1779{{{#!if tn-=1, ab+=+("1"+pd)
1780}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
1781}}}}}}
1782{{{#!if !br
r249
1783{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
1784{{{#!if ps=true, tw=0
r242
1785}}}}}}
1786{{{#!if !ps
1787{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
1788}}}{{{#!if ty=ty.toString(), ty.length==19
1789{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1790}}}}}}
1791{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
1792{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
1793}}}{{{#!if ty=ty.toString(), ty.length==19
1794{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1795}}}}}}{{{#!if ty=+ty
1796}}}}}}
r256
1797{{{#!if ty>ab
r242
1798{{{#!if au-=1, ab+=+("1"+pd)
1799}}}}}}{{{#!if au-=tx, ab-=ty
r256
1800}}}}}}
1801{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r242
1802}}}
1803{{{#!if (au==0)&&(ab==0)
1804{{{#!if br=true
1805}}}}}}}}}
1806{{{#!if !br
1807{{{#!if au=au.toString(), ab=ab.toString()
r252
1808}}}{{{#!if tn="", ps=(au.length==18), ps
1809{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
1810}}}}}}{{{#!if !ps&&(au.length<17)
1811{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r242
1812}}}}}}{{{#!if ab.length<18
1813{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
1814}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
1815}}}}}}
r242
1816##i=5
1817{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
1818{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
1819}}}{{{#!if ty=ty.toString(), ty.length==19
1820{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1821}}}}}}
1822{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
1823{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
1824}}}{{{#!if ty=ty.toString(), ty.length==19
1825{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1826}}}}}}{{{#!if ty=+ty
1827}}}}}}
1828{{{#!if ty>ab
1829{{{#!if tn-=1, ab+=+("1"+pd)
1830}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
1831}}}}}}
1832{{{#!if !br
r249
1833{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
1834{{{#!if ps=true, tw=0
r242
1835}}}}}}
1836{{{#!if !ps
1837{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
1838}}}{{{#!if ty=ty.toString(), ty.length==19
1839{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1840}}}}}}
1841{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
1842{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
1843}}}{{{#!if ty=ty.toString(), ty.length==19
1844{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1845}}}}}}{{{#!if ty=+ty
1846}}}}}}
r256
1847{{{#!if ty>ab
r242
1848{{{#!if au-=1, ab+=+("1"+pd)
1849}}}}}}{{{#!if au-=tx, ab-=ty
r256
1850}}}}}}
1851{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r242
1852}}}
1853{{{#!if (au==0)&&(ab==0)
1854{{{#!if br=true
1855}}}}}}}}}
1856{{{#!if !br
1857{{{#!if au=au.toString(), ab=ab.toString()
r252
1858}}}{{{#!if tn="", ps=(au.length==18), ps
1859{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
1860}}}}}}{{{#!if !ps&&(au.length<17)
1861{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r242
1862}}}}}}{{{#!if ab.length<18
1863{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
1864}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
1865}}}}}}
r242
1866##i=6
1867{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
1868{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
1869}}}{{{#!if ty=ty.toString(), ty.length==19
1870{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1871}}}}}}
1872{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
1873{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
1874}}}{{{#!if ty=ty.toString(), ty.length==19
1875{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1876}}}}}}{{{#!if ty=+ty
1877}}}}}}
1878{{{#!if ty>ab
1879{{{#!if tn-=1, ab+=+("1"+pd)
1880}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
1881}}}}}}
1882{{{#!if !br
r249
1883{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
1884{{{#!if ps=true, tw=0
r242
1885}}}}}}
1886{{{#!if !ps
1887{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
1888}}}{{{#!if ty=ty.toString(), ty.length==19
1889{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1890}}}}}}
1891{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
1892{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
1893}}}{{{#!if ty=ty.toString(), ty.length==19
1894{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1895}}}}}}{{{#!if ty=+ty
1896}}}}}}
r256
1897{{{#!if ty>ab
r242
1898{{{#!if au-=1, ab+=+("1"+pd)
1899}}}}}}{{{#!if au-=tx, ab-=ty
r256
1900}}}}}}
1901{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r242
1902}}}
1903{{{#!if (au==0)&&(ab==0)
1904{{{#!if br=true
1905}}}}}}}}}
1906{{{#!if !br
1907{{{#!if au=au.toString(), ab=ab.toString()
r252
1908}}}{{{#!if tn="", ps=(au.length==18), ps
1909{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
1910}}}}}}{{{#!if !ps&&(au.length<17)
1911{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r242
1912}}}}}}{{{#!if ab.length<18
1913{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
1914}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
1915}}}}}}
r242
1916##i=7
1917{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
1918{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
1919}}}{{{#!if ty=ty.toString(), ty.length==19
1920{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1921}}}}}}
1922{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
1923{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
1924}}}{{{#!if ty=ty.toString(), ty.length==19
1925{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1926}}}}}}{{{#!if ty=+ty
1927}}}}}}
1928{{{#!if ty>ab
1929{{{#!if tn-=1, ab+=+("1"+pd)
1930}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
1931}}}}}}
1932{{{#!if !br
r249
1933{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
1934{{{#!if ps=true, tw=0
r242
1935}}}}}}
1936{{{#!if !ps
1937{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
1938}}}{{{#!if ty=ty.toString(), ty.length==19
1939{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1940}}}}}}
1941{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
1942{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
1943}}}{{{#!if ty=ty.toString(), ty.length==19
1944{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1945}}}}}}{{{#!if ty=+ty
1946}}}}}}
r256
1947{{{#!if ty>ab
r242
1948{{{#!if au-=1, ab+=+("1"+pd)
1949}}}}}}{{{#!if au-=tx, ab-=ty
r256
1950}}}}}}
1951{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r242
1952}}}
1953{{{#!if (au==0)&&(ab==0)
1954{{{#!if br=true
1955}}}}}}}}}
1956{{{#!if !br
1957{{{#!if au=au.toString(), ab=ab.toString()
r252
1958}}}{{{#!if tn="", ps=(au.length==18), ps
1959{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
1960}}}}}}{{{#!if !ps&&(au.length<17)
1961{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r242
1962}}}}}}{{{#!if ab.length<18
1963{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
1964}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
1965}}}}}}
r242
1966##i=8
1967{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
1968{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
1969}}}{{{#!if ty=ty.toString(), ty.length==19
1970{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1971}}}}}}
1972{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
1973{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
1974}}}{{{#!if ty=ty.toString(), ty.length==19
1975{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1976}}}}}}{{{#!if ty=+ty
1977}}}}}}
1978{{{#!if ty>ab
1979{{{#!if tn-=1, ab+=+("1"+pd)
1980}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
1981}}}}}}
1982{{{#!if !br
r249
1983{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
1984{{{#!if ps=true, tw=0
r242
1985}}}}}}
1986{{{#!if !ps
1987{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
1988}}}{{{#!if ty=ty.toString(), ty.length==19
1989{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1990}}}}}}
1991{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
1992{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
1993}}}{{{#!if ty=ty.toString(), ty.length==19
1994{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1995}}}}}}{{{#!if ty=+ty
1996}}}}}}
r256
1997{{{#!if ty>ab
r242
1998{{{#!if au-=1, ab+=+("1"+pd)
1999}}}}}}{{{#!if au-=tx, ab-=ty
r256
2000}}}}}}
2001{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r242
2002}}}
2003{{{#!if (au==0)&&(ab==0)
2004{{{#!if br=true
2005}}}}}}}}}
2006{{{#!if !br
2007{{{#!if au=au.toString(), ab=ab.toString()
r252
2008}}}{{{#!if tn="", ps=(au.length==18), ps
2009{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2010}}}}}}{{{#!if !ps&&(au.length<17)
2011{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r242
2012}}}}}}{{{#!if ab.length<18
2013{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2014}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2015}}}}}}
r242
2016##i=9
2017{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2018{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2019}}}{{{#!if ty=ty.toString(), ty.length==19
2020{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2021}}}}}}
2022{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2023{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2024}}}{{{#!if ty=ty.toString(), ty.length==19
2025{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2026}}}}}}{{{#!if ty=+ty
2027}}}}}}
2028{{{#!if ty>ab
2029{{{#!if tn-=1, ab+=+("1"+pd)
2030}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2031}}}}}}
2032{{{#!if !br
r249
2033{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2034{{{#!if ps=true, tw=0
r242
2035}}}}}}
2036{{{#!if !ps
2037{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2038}}}{{{#!if ty=ty.toString(), ty.length==19
2039{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2040}}}}}}
2041{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2042{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2043}}}{{{#!if ty=ty.toString(), ty.length==19
2044{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2045}}}}}}{{{#!if ty=+ty
2046}}}}}}
r256
2047{{{#!if ty>ab
r242
2048{{{#!if au-=1, ab+=+("1"+pd)
2049}}}}}}{{{#!if au-=tx, ab-=ty
r256
2050}}}}}}
2051{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r242
2052}}}
2053{{{#!if (au==0)&&(ab==0)
2054{{{#!if br=true
2055}}}}}}}}}
2056{{{#!if !br
2057{{{#!if au=au.toString(), ab=ab.toString()
r252
2058}}}{{{#!if tn="", ps=(au.length==18), ps
2059{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2060}}}}}}{{{#!if !ps&&(au.length<17)
2061{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r242
2062}}}}}}{{{#!if ab.length<18
2063{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2064}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2065}}}}}}
r242
2066##i=10
2067{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2068{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2069}}}{{{#!if ty=ty.toString(), ty.length==19
2070{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2071}}}}}}
2072{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2073{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2074}}}{{{#!if ty=ty.toString(), ty.length==19
2075{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2076}}}}}}{{{#!if ty=+ty
2077}}}}}}
2078{{{#!if ty>ab
2079{{{#!if tn-=1, ab+=+("1"+pd)
2080}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2081}}}}}}
2082{{{#!if !br
r249
2083{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2084{{{#!if ps=true, tw=0
r242
2085}}}}}}
2086{{{#!if !ps
2087{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2088}}}{{{#!if ty=ty.toString(), ty.length==19
2089{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2090}}}}}}
2091{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2092{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2093}}}{{{#!if ty=ty.toString(), ty.length==19
2094{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2095}}}}}}{{{#!if ty=+ty
2096}}}}}}
r256
2097{{{#!if ty>ab
r242
2098{{{#!if au-=1, ab+=+("1"+pd)
2099}}}}}}{{{#!if au-=tx, ab-=ty
r256
2100}}}}}}
2101{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r242
2102}}}
2103{{{#!if (au==0)&&(ab==0)
2104{{{#!if br=true
2105}}}}}}}}}
2106{{{#!if !br
2107{{{#!if au=au.toString(), ab=ab.toString()
r252
2108}}}{{{#!if tn="", ps=(au.length==18), ps
2109{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2110}}}}}}{{{#!if !ps&&(au.length<17)
2111{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r242
2112}}}}}}{{{#!if ab.length<18
2113{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2114}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2115}}}}}}
r243
2116##i=11
2117{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2118{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2119}}}{{{#!if ty=ty.toString(), ty.length==19
2120{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2121}}}}}}
2122{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2123{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2124}}}{{{#!if ty=ty.toString(), ty.length==19
2125{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2126}}}}}}{{{#!if ty=+ty
2127}}}}}}
2128{{{#!if ty>ab
2129{{{#!if tn-=1, ab+=+("1"+pd)
2130}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2131}}}}}}
2132{{{#!if !br
r249
2133{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2134{{{#!if ps=true, tw=0
r243
2135}}}}}}
2136{{{#!if !ps
2137{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2138}}}{{{#!if ty=ty.toString(), ty.length==19
2139{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2140}}}}}}
2141{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2142{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2143}}}{{{#!if ty=ty.toString(), ty.length==19
2144{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2145}}}}}}{{{#!if ty=+ty
2146}}}}}}
r256
2147{{{#!if ty>ab
r243
2148{{{#!if au-=1, ab+=+("1"+pd)
2149}}}}}}{{{#!if au-=tx, ab-=ty
r256
2150}}}}}}
2151{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
2152}}}
2153{{{#!if (au==0)&&(ab==0)
2154{{{#!if br=true
2155}}}}}}}}}
2156{{{#!if !br
2157{{{#!if au=au.toString(), ab=ab.toString()
r252
2158}}}{{{#!if tn="", ps=(au.length==18), ps
2159{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2160}}}}}}{{{#!if !ps&&(au.length<17)
2161{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
2162}}}}}}{{{#!if ab.length<18
2163{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2164}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2165}}}}}}
r243
2166##i=12
2167{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2168{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2169}}}{{{#!if ty=ty.toString(), ty.length==19
2170{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2171}}}}}}
2172{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2173{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2174}}}{{{#!if ty=ty.toString(), ty.length==19
2175{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2176}}}}}}{{{#!if ty=+ty
2177}}}}}}
2178{{{#!if ty>ab
2179{{{#!if tn-=1, ab+=+("1"+pd)
2180}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2181}}}}}}
2182{{{#!if !br
r249
2183{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2184{{{#!if ps=true, tw=0
r243
2185}}}}}}
2186{{{#!if !ps
2187{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2188}}}{{{#!if ty=ty.toString(), ty.length==19
2189{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2190}}}}}}
2191{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2192{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2193}}}{{{#!if ty=ty.toString(), ty.length==19
2194{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2195}}}}}}{{{#!if ty=+ty
2196}}}}}}
r256
2197{{{#!if ty>ab
r243
2198{{{#!if au-=1, ab+=+("1"+pd)
2199}}}}}}{{{#!if au-=tx, ab-=ty
r256
2200}}}}}}
2201{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
2202}}}
2203{{{#!if (au==0)&&(ab==0)
2204{{{#!if br=true
2205}}}}}}}}}
2206{{{#!if !br
2207{{{#!if au=au.toString(), ab=ab.toString()
r252
2208}}}{{{#!if tn="", ps=(au.length==18), ps
2209{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2210}}}}}}{{{#!if !ps&&(au.length<17)
2211{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
2212}}}}}}{{{#!if ab.length<18
2213{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2214}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2215}}}}}}
r243
2216##i=13
2217{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2218{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2219}}}{{{#!if ty=ty.toString(), ty.length==19
2220{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2221}}}}}}
2222{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2223{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2224}}}{{{#!if ty=ty.toString(), ty.length==19
2225{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2226}}}}}}{{{#!if ty=+ty
2227}}}}}}
2228{{{#!if ty>ab
2229{{{#!if tn-=1, ab+=+("1"+pd)
2230}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2231}}}}}}
2232{{{#!if !br
r249
2233{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2234{{{#!if ps=true, tw=0
r243
2235}}}}}}
2236{{{#!if !ps
2237{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2238}}}{{{#!if ty=ty.toString(), ty.length==19
2239{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2240}}}}}}
2241{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2242{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2243}}}{{{#!if ty=ty.toString(), ty.length==19
2244{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2245}}}}}}{{{#!if ty=+ty
2246}}}}}}
r256
2247{{{#!if ty>ab
r243
2248{{{#!if au-=1, ab+=+("1"+pd)
2249}}}}}}{{{#!if au-=tx, ab-=ty
r256
2250}}}}}}
2251{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
2252}}}
2253{{{#!if (au==0)&&(ab==0)
2254{{{#!if br=true
2255}}}}}}}}}
2256{{{#!if !br
2257{{{#!if au=au.toString(), ab=ab.toString()
r252
2258}}}{{{#!if tn="", ps=(au.length==18), ps
2259{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2260}}}}}}{{{#!if !ps&&(au.length<17)
2261{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
2262}}}}}}{{{#!if ab.length<18
2263{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2264}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2265}}}}}}
r243
2266##i=14
2267{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2268{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2269}}}{{{#!if ty=ty.toString(), ty.length==19
2270{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2271}}}}}}
2272{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2273{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2274}}}{{{#!if ty=ty.toString(), ty.length==19
2275{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2276}}}}}}{{{#!if ty=+ty
2277}}}}}}
2278{{{#!if ty>ab
2279{{{#!if tn-=1, ab+=+("1"+pd)
2280}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2281}}}}}}
2282{{{#!if !br
r249
2283{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2284{{{#!if ps=true, tw=0
r243
2285}}}}}}
2286{{{#!if !ps
2287{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2288}}}{{{#!if ty=ty.toString(), ty.length==19
2289{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2290}}}}}}
2291{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2292{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2293}}}{{{#!if ty=ty.toString(), ty.length==19
2294{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2295}}}}}}{{{#!if ty=+ty
2296}}}}}}
r256
2297{{{#!if ty>ab
r243
2298{{{#!if au-=1, ab+=+("1"+pd)
2299}}}}}}{{{#!if au-=tx, ab-=ty
r256
2300}}}}}}
2301{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
2302}}}
2303{{{#!if (au==0)&&(ab==0)
2304{{{#!if br=true
2305}}}}}}}}}
2306{{{#!if !br
2307{{{#!if au=au.toString(), ab=ab.toString()
r252
2308}}}{{{#!if tn="", ps=(au.length==18), ps
2309{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2310}}}}}}{{{#!if !ps&&(au.length<17)
2311{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
2312}}}}}}{{{#!if ab.length<18
2313{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2314}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2315}}}}}}
r243
2316##i=15
2317{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2318{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2319}}}{{{#!if ty=ty.toString(), ty.length==19
2320{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2321}}}}}}
2322{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2323{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2324}}}{{{#!if ty=ty.toString(), ty.length==19
2325{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2326}}}}}}{{{#!if ty=+ty
2327}}}}}}
2328{{{#!if ty>ab
2329{{{#!if tn-=1, ab+=+("1"+pd)
2330}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2331}}}}}}
2332{{{#!if !br
r249
2333{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2334{{{#!if ps=true, tw=0
r243
2335}}}}}}
2336{{{#!if !ps
2337{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2338}}}{{{#!if ty=ty.toString(), ty.length==19
2339{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2340}}}}}}
2341{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2342{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2343}}}{{{#!if ty=ty.toString(), ty.length==19
2344{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2345}}}}}}{{{#!if ty=+ty
2346}}}}}}
r256
2347{{{#!if ty>ab
r243
2348{{{#!if au-=1, ab+=+("1"+pd)
2349}}}}}}{{{#!if au-=tx, ab-=ty
r256
2350}}}}}}
2351{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
2352}}}
2353{{{#!if (au==0)&&(ab==0)
2354{{{#!if br=true
2355}}}}}}}}}
2356{{{#!if !br
2357{{{#!if au=au.toString(), ab=ab.toString()
r252
2358}}}{{{#!if tn="", ps=(au.length==18), ps
2359{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2360}}}}}}{{{#!if !ps&&(au.length<17)
2361{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
2362}}}}}}{{{#!if ab.length<18
2363{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2364}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2365}}}}}}
r243
2366##i=16
2367{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2368{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2369}}}{{{#!if ty=ty.toString(), ty.length==19
2370{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2371}}}}}}
2372{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2373{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2374}}}{{{#!if ty=ty.toString(), ty.length==19
2375{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2376}}}}}}{{{#!if ty=+ty
2377}}}}}}
2378{{{#!if ty>ab
2379{{{#!if tn-=1, ab+=+("1"+pd)
2380}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2381}}}}}}
2382{{{#!if !br
r249
2383{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2384{{{#!if ps=true, tw=0
r243
2385}}}}}}
2386{{{#!if !ps
2387{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2388}}}{{{#!if ty=ty.toString(), ty.length==19
2389{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2390}}}}}}
2391{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2392{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2393}}}{{{#!if ty=ty.toString(), ty.length==19
2394{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2395}}}}}}{{{#!if ty=+ty
2396}}}}}}
r256
2397{{{#!if ty>ab
r243
2398{{{#!if au-=1, ab+=+("1"+pd)
2399}}}}}}{{{#!if au-=tx, ab-=ty
r256
2400}}}}}}
2401{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
2402}}}
2403{{{#!if (au==0)&&(ab==0)
2404{{{#!if br=true
2405}}}}}}}}}
2406{{{#!if !br
2407{{{#!if au=au.toString(), ab=ab.toString()
r252
2408}}}{{{#!if tn="", ps=(au.length==18), ps
2409{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2410}}}}}}{{{#!if !ps&&(au.length<17)
2411{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
2412}}}}}}{{{#!if ab.length<18
2413{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2414}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2415}}}}}}
r243
2416##i=17
2417{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2418{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2419}}}{{{#!if ty=ty.toString(), ty.length==19
2420{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2421}}}}}}
2422{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2423{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2424}}}{{{#!if ty=ty.toString(), ty.length==19
2425{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2426}}}}}}{{{#!if ty=+ty
2427}}}}}}
2428{{{#!if ty>ab
2429{{{#!if tn-=1, ab+=+("1"+pd)
2430}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2431}}}}}}
2432{{{#!if !br
r249
2433{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2434{{{#!if ps=true, tw=0
r243
2435}}}}}}
2436{{{#!if !ps
2437{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2438}}}{{{#!if ty=ty.toString(), ty.length==19
2439{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2440}}}}}}
2441{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2442{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2443}}}{{{#!if ty=ty.toString(), ty.length==19
2444{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2445}}}}}}{{{#!if ty=+ty
2446}}}}}}
r256
2447{{{#!if ty>ab
r243
2448{{{#!if au-=1, ab+=+("1"+pd)
2449}}}}}}{{{#!if au-=tx, ab-=ty
r256
2450}}}}}}
2451{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
2452}}}
2453{{{#!if (au==0)&&(ab==0)
2454{{{#!if br=true
2455}}}}}}}}}
2456{{{#!if !br
2457{{{#!if au=au.toString(), ab=ab.toString()
r252
2458}}}{{{#!if tn="", ps=(au.length==18), ps
2459{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2460}}}}}}{{{#!if !ps&&(au.length<17)
2461{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
2462}}}}}}{{{#!if ab.length<18
2463{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2464}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2465}}}}}}
r243
2466##i=18
2467{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2468{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2469}}}{{{#!if ty=ty.toString(), ty.length==19
2470{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2471}}}}}}
2472{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2473{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2474}}}{{{#!if ty=ty.toString(), ty.length==19
2475{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2476}}}}}}{{{#!if ty=+ty
2477}}}}}}
2478{{{#!if ty>ab
2479{{{#!if tn-=1, ab+=+("1"+pd)
2480}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2481}}}}}}
2482{{{#!if !br
r249
2483{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2484{{{#!if ps=true, tw=0
r243
2485}}}}}}
2486{{{#!if !ps
2487{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2488}}}{{{#!if ty=ty.toString(), ty.length==19
2489{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2490}}}}}}
2491{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2492{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2493}}}{{{#!if ty=ty.toString(), ty.length==19
2494{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2495}}}}}}{{{#!if ty=+ty
2496}}}}}}
r256
2497{{{#!if ty>ab
r243
2498{{{#!if au-=1, ab+=+("1"+pd)
2499}}}}}}{{{#!if au-=tx, ab-=ty
r256
2500}}}}}}
2501{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
2502}}}
2503{{{#!if (au==0)&&(ab==0)
2504{{{#!if br=true
2505}}}}}}}}}
2506{{{#!if !br
2507{{{#!if au=au.toString(), ab=ab.toString()
r252
2508}}}{{{#!if tn="", ps=(au.length==18), ps
2509{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2510}}}}}}{{{#!if !ps&&(au.length<17)
2511{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
2512}}}}}}{{{#!if ab.length<18
2513{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2514}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2515}}}}}}
r243
2516##i=19
2517{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2518{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2519}}}{{{#!if ty=ty.toString(), ty.length==19
2520{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2521}}}}}}
2522{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2523{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2524}}}{{{#!if ty=ty.toString(), ty.length==19
2525{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2526}}}}}}{{{#!if ty=+ty
2527}}}}}}
2528{{{#!if ty>ab
2529{{{#!if tn-=1, ab+=+("1"+pd)
2530}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2531}}}}}}
2532{{{#!if !br
r249
2533{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2534{{{#!if ps=true, tw=0
r243
2535}}}}}}
2536{{{#!if !ps
2537{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2538}}}{{{#!if ty=ty.toString(), ty.length==19
2539{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2540}}}}}}
2541{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2542{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2543}}}{{{#!if ty=ty.toString(), ty.length==19
2544{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2545}}}}}}{{{#!if ty=+ty
2546}}}}}}
r256
2547{{{#!if ty>ab
r243
2548{{{#!if au-=1, ab+=+("1"+pd)
2549}}}}}}{{{#!if au-=tx, ab-=ty
r256
2550}}}}}}
2551{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
2552}}}
2553{{{#!if (au==0)&&(ab==0)
2554{{{#!if br=true
2555}}}}}}}}}
2556{{{#!if !br
2557{{{#!if au=au.toString(), ab=ab.toString()
r252
2558}}}{{{#!if tn="", ps=(au.length==18), ps
2559{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2560}}}}}}{{{#!if !ps&&(au.length<17)
2561{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
2562}}}}}}{{{#!if ab.length<18
2563{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2564}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2565}}}}}}
r243
2566##i=20
2567{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2568{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2569}}}{{{#!if ty=ty.toString(), ty.length==19
2570{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2571}}}}}}
2572{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2573{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2574}}}{{{#!if ty=ty.toString(), ty.length==19
2575{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2576}}}}}}{{{#!if ty=+ty
2577}}}}}}
2578{{{#!if ty>ab
2579{{{#!if tn-=1, ab+=+("1"+pd)
2580}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2581}}}}}}
2582{{{#!if !br
r249
2583{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2584{{{#!if ps=true, tw=0
r243
2585}}}}}}
2586{{{#!if !ps
2587{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2588}}}{{{#!if ty=ty.toString(), ty.length==19
2589{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2590}}}}}}
2591{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2592{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2593}}}{{{#!if ty=ty.toString(), ty.length==19
2594{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2595}}}}}}{{{#!if ty=+ty
2596}}}}}}
r256
2597{{{#!if ty>ab
r243
2598{{{#!if au-=1, ab+=+("1"+pd)
2599}}}}}}{{{#!if au-=tx, ab-=ty
r256
2600}}}}}}
2601{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
2602}}}
2603{{{#!if (au==0)&&(ab==0)
2604{{{#!if br=true
2605}}}}}}}}}
2606{{{#!if !br
2607{{{#!if au=au.toString(), ab=ab.toString()
r252
2608}}}{{{#!if tn="", ps=(au.length==18), ps
2609{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2610}}}}}}{{{#!if !ps&&(au.length<17)
2611{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
2612}}}}}}{{{#!if ab.length<18
2613{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2614}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2615}}}}}}
r243
2616##i=21
2617{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2618{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2619}}}{{{#!if ty=ty.toString(), ty.length==19
2620{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2621}}}}}}
2622{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2623{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2624}}}{{{#!if ty=ty.toString(), ty.length==19
2625{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2626}}}}}}{{{#!if ty=+ty
2627}}}}}}
2628{{{#!if ty>ab
2629{{{#!if tn-=1, ab+=+("1"+pd)
2630}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2631}}}}}}
2632{{{#!if !br
r249
2633{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2634{{{#!if ps=true, tw=0
r243
2635}}}}}}
2636{{{#!if !ps
2637{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2638}}}{{{#!if ty=ty.toString(), ty.length==19
2639{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2640}}}}}}
2641{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2642{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2643}}}{{{#!if ty=ty.toString(), ty.length==19
2644{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2645}}}}}}{{{#!if ty=+ty
2646}}}}}}
r256
2647{{{#!if ty>ab
r243
2648{{{#!if au-=1, ab+=+("1"+pd)
2649}}}}}}{{{#!if au-=tx, ab-=ty
r256
2650}}}}}}
2651{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
2652}}}
2653{{{#!if (au==0)&&(ab==0)
2654{{{#!if br=true
2655}}}}}}}}}
2656{{{#!if !br
2657{{{#!if au=au.toString(), ab=ab.toString()
r252
2658}}}{{{#!if tn="", ps=(au.length==18), ps
2659{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2660}}}}}}{{{#!if !ps&&(au.length<17)
2661{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
2662}}}}}}{{{#!if ab.length<18
2663{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2664}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2665}}}}}}
r243
2666##i=22
2667{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2668{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2669}}}{{{#!if ty=ty.toString(), ty.length==19
2670{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2671}}}}}}
2672{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2673{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2674}}}{{{#!if ty=ty.toString(), ty.length==19
2675{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2676}}}}}}{{{#!if ty=+ty
2677}}}}}}
2678{{{#!if ty>ab
2679{{{#!if tn-=1, ab+=+("1"+pd)
2680}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2681}}}}}}
2682{{{#!if !br
r249
2683{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2684{{{#!if ps=true, tw=0
r243
2685}}}}}}
2686{{{#!if !ps
2687{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2688}}}{{{#!if ty=ty.toString(), ty.length==19
2689{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2690}}}}}}
2691{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2692{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2693}}}{{{#!if ty=ty.toString(), ty.length==19
2694{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2695}}}}}}{{{#!if ty=+ty
2696}}}}}}
r256
2697{{{#!if ty>ab
r243
2698{{{#!if au-=1, ab+=+("1"+pd)
2699}}}}}}{{{#!if au-=tx, ab-=ty
r256
2700}}}}}}
2701{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
2702}}}
2703{{{#!if (au==0)&&(ab==0)
2704{{{#!if br=true
2705}}}}}}}}}
2706{{{#!if !br
2707{{{#!if au=au.toString(), ab=ab.toString()
r252
2708}}}{{{#!if tn="", ps=(au.length==18), ps
2709{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2710}}}}}}{{{#!if !ps&&(au.length<17)
2711{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
2712}}}}}}{{{#!if ab.length<18
2713{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2714}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2715}}}}}}
r243
2716##i=23
2717{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2718{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2719}}}{{{#!if ty=ty.toString(), ty.length==19
2720{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2721}}}}}}
2722{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2723{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2724}}}{{{#!if ty=ty.toString(), ty.length==19
2725{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2726}}}}}}{{{#!if ty=+ty
2727}}}}}}
2728{{{#!if ty>ab
2729{{{#!if tn-=1, ab+=+("1"+pd)
2730}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2731}}}}}}
2732{{{#!if !br
r249
2733{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2734{{{#!if ps=true, tw=0
r243
2735}}}}}}
2736{{{#!if !ps
2737{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2738}}}{{{#!if ty=ty.toString(), ty.length==19
2739{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2740}}}}}}
2741{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2742{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2743}}}{{{#!if ty=ty.toString(), ty.length==19
2744{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2745}}}}}}{{{#!if ty=+ty
2746}}}}}}
r256
2747{{{#!if ty>ab
r243
2748{{{#!if au-=1, ab+=+("1"+pd)
2749}}}}}}{{{#!if au-=tx, ab-=ty
r256
2750}}}}}}
2751{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
2752}}}
2753{{{#!if (au==0)&&(ab==0)
2754{{{#!if br=true
2755}}}}}}}}}
2756{{{#!if !br
2757{{{#!if au=au.toString(), ab=ab.toString()
r252
2758}}}{{{#!if tn="", ps=(au.length==18), ps
2759{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2760}}}}}}{{{#!if !ps&&(au.length<17)
2761{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
2762}}}}}}{{{#!if ab.length<18
2763{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2764}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2765}}}}}}
r243
2766##i=24
2767{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2768{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2769}}}{{{#!if ty=ty.toString(), ty.length==19
2770{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2771}}}}}}
2772{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2773{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2774}}}{{{#!if ty=ty.toString(), ty.length==19
2775{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2776}}}}}}{{{#!if ty=+ty
2777}}}}}}
2778{{{#!if ty>ab
2779{{{#!if tn-=1, ab+=+("1"+pd)
2780}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2781}}}}}}
2782{{{#!if !br
r249
2783{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2784{{{#!if ps=true, tw=0
r243
2785}}}}}}
2786{{{#!if !ps
2787{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2788}}}{{{#!if ty=ty.toString(), ty.length==19
2789{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2790}}}}}}
2791{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2792{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2793}}}{{{#!if ty=ty.toString(), ty.length==19
2794{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2795}}}}}}{{{#!if ty=+ty
2796}}}}}}
r256
2797{{{#!if ty>ab
r243
2798{{{#!if au-=1, ab+=+("1"+pd)
2799}}}}}}{{{#!if au-=tx, ab-=ty
r256
2800}}}}}}
2801{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
2802}}}
2803{{{#!if (au==0)&&(ab==0)
2804{{{#!if br=true
2805}}}}}}}}}
2806{{{#!if !br
2807{{{#!if au=au.toString(), ab=ab.toString()
r252
2808}}}{{{#!if tn="", ps=(au.length==18), ps
2809{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2810}}}}}}{{{#!if !ps&&(au.length<17)
2811{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
2812}}}}}}{{{#!if ab.length<18
2813{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2814}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2815}}}}}}
r243
2816##i=25
2817{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2818{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2819}}}{{{#!if ty=ty.toString(), ty.length==19
2820{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2821}}}}}}
2822{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2823{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2824}}}{{{#!if ty=ty.toString(), ty.length==19
2825{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2826}}}}}}{{{#!if ty=+ty
2827}}}}}}
2828{{{#!if ty>ab
2829{{{#!if tn-=1, ab+=+("1"+pd)
2830}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2831}}}}}}
2832{{{#!if !br
r249
2833{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2834{{{#!if ps=true, tw=0
r243
2835}}}}}}
2836{{{#!if !ps
2837{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2838}}}{{{#!if ty=ty.toString(), ty.length==19
2839{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2840}}}}}}
2841{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2842{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2843}}}{{{#!if ty=ty.toString(), ty.length==19
2844{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2845}}}}}}{{{#!if ty=+ty
2846}}}}}}
r256
2847{{{#!if ty>ab
r243
2848{{{#!if au-=1, ab+=+("1"+pd)
2849}}}}}}{{{#!if au-=tx, ab-=ty
r256
2850}}}}}}
2851{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
2852}}}
2853{{{#!if (au==0)&&(ab==0)
2854{{{#!if br=true
2855}}}}}}}}}
2856{{{#!if !br
2857{{{#!if au=au.toString(), ab=ab.toString()
r252
2858}}}{{{#!if tn="", ps=(au.length==18), ps
2859{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2860}}}}}}{{{#!if !ps&&(au.length<17)
2861{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
2862}}}}}}{{{#!if ab.length<18
2863{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2864}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2865}}}}}}
r243
2866##i=26
2867{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2868{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2869}}}{{{#!if ty=ty.toString(), ty.length==19
2870{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2871}}}}}}
2872{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2873{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2874}}}{{{#!if ty=ty.toString(), ty.length==19
2875{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2876}}}}}}{{{#!if ty=+ty
2877}}}}}}
2878{{{#!if ty>ab
2879{{{#!if tn-=1, ab+=+("1"+pd)
2880}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2881}}}}}}
2882{{{#!if !br
r249
2883{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2884{{{#!if ps=true, tw=0
r243
2885}}}}}}
2886{{{#!if !ps
2887{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2888}}}{{{#!if ty=ty.toString(), ty.length==19
2889{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2890}}}}}}
2891{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2892{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2893}}}{{{#!if ty=ty.toString(), ty.length==19
2894{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2895}}}}}}{{{#!if ty=+ty
2896}}}}}}
r256
2897{{{#!if ty>ab
r243
2898{{{#!if au-=1, ab+=+("1"+pd)
2899}}}}}}{{{#!if au-=tx, ab-=ty
r256
2900}}}}}}
2901{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
2902}}}
2903{{{#!if (au==0)&&(ab==0)
2904{{{#!if br=true
2905}}}}}}}}}
2906{{{#!if !br
2907{{{#!if au=au.toString(), ab=ab.toString()
r252
2908}}}{{{#!if tn="", ps=(au.length==18), ps
2909{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2910}}}}}}{{{#!if !ps&&(au.length<17)
2911{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
2912}}}}}}{{{#!if ab.length<18
2913{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2914}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2915}}}}}}
r243
2916##i=27
2917{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2918{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2919}}}{{{#!if ty=ty.toString(), ty.length==19
2920{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2921}}}}}}
2922{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2923{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2924}}}{{{#!if ty=ty.toString(), ty.length==19
2925{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2926}}}}}}{{{#!if ty=+ty
2927}}}}}}
2928{{{#!if ty>ab
2929{{{#!if tn-=1, ab+=+("1"+pd)
2930}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2931}}}}}}
2932{{{#!if !br
r249
2933{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2934{{{#!if ps=true, tw=0
r243
2935}}}}}}
2936{{{#!if !ps
2937{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2938}}}{{{#!if ty=ty.toString(), ty.length==19
2939{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2940}}}}}}
2941{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2942{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2943}}}{{{#!if ty=ty.toString(), ty.length==19
2944{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2945}}}}}}{{{#!if ty=+ty
2946}}}}}}
r256
2947{{{#!if ty>ab
r243
2948{{{#!if au-=1, ab+=+("1"+pd)
2949}}}}}}{{{#!if au-=tx, ab-=ty
r256
2950}}}}}}
2951{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
2952}}}
2953{{{#!if (au==0)&&(ab==0)
2954{{{#!if br=true
2955}}}}}}}}}
2956{{{#!if !br
2957{{{#!if au=au.toString(), ab=ab.toString()
r252
2958}}}{{{#!if tn="", ps=(au.length==18), ps
2959{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
2960}}}}}}{{{#!if !ps&&(au.length<17)
2961{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
2962}}}}}}{{{#!if ab.length<18
2963{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
2964}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
2965}}}}}}
r243
2966##i=28
2967{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
2968{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
2969}}}{{{#!if ty=ty.toString(), ty.length==19
2970{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2971}}}}}}
2972{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
2973{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
2974}}}{{{#!if ty=ty.toString(), ty.length==19
2975{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2976}}}}}}{{{#!if ty=+ty
2977}}}}}}
2978{{{#!if ty>ab
2979{{{#!if tn-=1, ab+=+("1"+pd)
2980}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
2981}}}}}}
2982{{{#!if !br
r249
2983{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
2984{{{#!if ps=true, tw=0
r243
2985}}}}}}
2986{{{#!if !ps
2987{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
2988}}}{{{#!if ty=ty.toString(), ty.length==19
2989{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2990}}}}}}
2991{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
2992{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
2993}}}{{{#!if ty=ty.toString(), ty.length==19
2994{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
2995}}}}}}{{{#!if ty=+ty
2996}}}}}}
r256
2997{{{#!if ty>ab
r243
2998{{{#!if au-=1, ab+=+("1"+pd)
2999}}}}}}{{{#!if au-=tx, ab-=ty
r256
3000}}}}}}
3001{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3002}}}
3003{{{#!if (au==0)&&(ab==0)
3004{{{#!if br=true
3005}}}}}}}}}
3006{{{#!if !br
3007{{{#!if au=au.toString(), ab=ab.toString()
r252
3008}}}{{{#!if tn="", ps=(au.length==18), ps
3009{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3010}}}}}}{{{#!if !ps&&(au.length<17)
3011{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3012}}}}}}{{{#!if ab.length<18
3013{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3014}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3015}}}}}}
r243
3016##i=29
3017{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3018{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3019}}}{{{#!if ty=ty.toString(), ty.length==19
3020{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3021}}}}}}
3022{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3023{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3024}}}{{{#!if ty=ty.toString(), ty.length==19
3025{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3026}}}}}}{{{#!if ty=+ty
3027}}}}}}
3028{{{#!if ty>ab
3029{{{#!if tn-=1, ab+=+("1"+pd)
3030}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3031}}}}}}
3032{{{#!if !br
r249
3033{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3034{{{#!if ps=true, tw=0
r243
3035}}}}}}
3036{{{#!if !ps
3037{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3038}}}{{{#!if ty=ty.toString(), ty.length==19
3039{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3040}}}}}}
3041{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3042{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3043}}}{{{#!if ty=ty.toString(), ty.length==19
3044{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3045}}}}}}{{{#!if ty=+ty
3046}}}}}}
r256
3047{{{#!if ty>ab
r243
3048{{{#!if au-=1, ab+=+("1"+pd)
3049}}}}}}{{{#!if au-=tx, ab-=ty
r256
3050}}}}}}
3051{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3052}}}
3053{{{#!if (au==0)&&(ab==0)
3054{{{#!if br=true
3055}}}}}}}}}
3056{{{#!if !br
3057{{{#!if au=au.toString(), ab=ab.toString()
r252
3058}}}{{{#!if tn="", ps=(au.length==18), ps
3059{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3060}}}}}}{{{#!if !ps&&(au.length<17)
3061{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3062}}}}}}{{{#!if ab.length<18
3063{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3064}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3065}}}}}}
r243
3066##i=30
3067{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3068{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3069}}}{{{#!if ty=ty.toString(), ty.length==19
3070{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3071}}}}}}
3072{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3073{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3074}}}{{{#!if ty=ty.toString(), ty.length==19
3075{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3076}}}}}}{{{#!if ty=+ty
3077}}}}}}
3078{{{#!if ty>ab
3079{{{#!if tn-=1, ab+=+("1"+pd)
3080}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3081}}}}}}
3082{{{#!if !br
r249
3083{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3084{{{#!if ps=true, tw=0
r243
3085}}}}}}
3086{{{#!if !ps
3087{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3088}}}{{{#!if ty=ty.toString(), ty.length==19
3089{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3090}}}}}}
3091{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3092{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3093}}}{{{#!if ty=ty.toString(), ty.length==19
3094{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3095}}}}}}{{{#!if ty=+ty
3096}}}}}}
r256
3097{{{#!if ty>ab
r243
3098{{{#!if au-=1, ab+=+("1"+pd)
3099}}}}}}{{{#!if au-=tx, ab-=ty
r256
3100}}}}}}
3101{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3102}}}
3103{{{#!if (au==0)&&(ab==0)
3104{{{#!if br=true
3105}}}}}}}}}
3106{{{#!if !br
3107{{{#!if au=au.toString(), ab=ab.toString()
r252
3108}}}{{{#!if tn="", ps=(au.length==18), ps
3109{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3110}}}}}}{{{#!if !ps&&(au.length<17)
3111{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3112}}}}}}{{{#!if ab.length<18
3113{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3114}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3115}}}}}}
r243
3116##i=31
3117{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3118{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3119}}}{{{#!if ty=ty.toString(), ty.length==19
3120{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3121}}}}}}
3122{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3123{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3124}}}{{{#!if ty=ty.toString(), ty.length==19
3125{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3126}}}}}}{{{#!if ty=+ty
3127}}}}}}
3128{{{#!if ty>ab
3129{{{#!if tn-=1, ab+=+("1"+pd)
3130}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3131}}}}}}
3132{{{#!if !br
r249
3133{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3134{{{#!if ps=true, tw=0
r243
3135}}}}}}
3136{{{#!if !ps
3137{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3138}}}{{{#!if ty=ty.toString(), ty.length==19
3139{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3140}}}}}}
3141{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3142{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3143}}}{{{#!if ty=ty.toString(), ty.length==19
3144{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3145}}}}}}{{{#!if ty=+ty
3146}}}}}}
r256
3147{{{#!if ty>ab
r243
3148{{{#!if au-=1, ab+=+("1"+pd)
3149}}}}}}{{{#!if au-=tx, ab-=ty
r256
3150}}}}}}
3151{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3152}}}
3153{{{#!if (au==0)&&(ab==0)
3154{{{#!if br=true
3155}}}}}}}}}
3156{{{#!if !br
3157{{{#!if au=au.toString(), ab=ab.toString()
r252
3158}}}{{{#!if tn="", ps=(au.length==18), ps
3159{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3160}}}}}}{{{#!if !ps&&(au.length<17)
3161{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3162}}}}}}{{{#!if ab.length<18
3163{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3164}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3165}}}}}}
r243
3166##i=32
3167{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3168{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3169}}}{{{#!if ty=ty.toString(), ty.length==19
3170{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3171}}}}}}
3172{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3173{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3174}}}{{{#!if ty=ty.toString(), ty.length==19
3175{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3176}}}}}}{{{#!if ty=+ty
3177}}}}}}
3178{{{#!if ty>ab
3179{{{#!if tn-=1, ab+=+("1"+pd)
3180}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3181}}}}}}
3182{{{#!if !br
r249
3183{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3184{{{#!if ps=true, tw=0
r243
3185}}}}}}
3186{{{#!if !ps
3187{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3188}}}{{{#!if ty=ty.toString(), ty.length==19
3189{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3190}}}}}}
3191{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3192{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3193}}}{{{#!if ty=ty.toString(), ty.length==19
3194{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3195}}}}}}{{{#!if ty=+ty
3196}}}}}}
r256
3197{{{#!if ty>ab
r243
3198{{{#!if au-=1, ab+=+("1"+pd)
3199}}}}}}{{{#!if au-=tx, ab-=ty
r256
3200}}}}}}
3201{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3202}}}
3203{{{#!if (au==0)&&(ab==0)
3204{{{#!if br=true
3205}}}}}}}}}
3206{{{#!if !br
3207{{{#!if au=au.toString(), ab=ab.toString()
r252
3208}}}{{{#!if tn="", ps=(au.length==18), ps
3209{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3210}}}}}}{{{#!if !ps&&(au.length<17)
3211{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3212}}}}}}{{{#!if ab.length<18
3213{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3214}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3215}}}}}}
r243
3216##i=33
3217{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3218{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3219}}}{{{#!if ty=ty.toString(), ty.length==19
3220{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3221}}}}}}
3222{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3223{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3224}}}{{{#!if ty=ty.toString(), ty.length==19
3225{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3226}}}}}}{{{#!if ty=+ty
3227}}}}}}
3228{{{#!if ty>ab
3229{{{#!if tn-=1, ab+=+("1"+pd)
3230}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3231}}}}}}
3232{{{#!if !br
r249
3233{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3234{{{#!if ps=true, tw=0
r243
3235}}}}}}
3236{{{#!if !ps
3237{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3238}}}{{{#!if ty=ty.toString(), ty.length==19
3239{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3240}}}}}}
3241{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3242{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3243}}}{{{#!if ty=ty.toString(), ty.length==19
3244{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3245}}}}}}{{{#!if ty=+ty
3246}}}}}}
r256
3247{{{#!if ty>ab
r243
3248{{{#!if au-=1, ab+=+("1"+pd)
3249}}}}}}{{{#!if au-=tx, ab-=ty
r256
3250}}}}}}
3251{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3252}}}
3253{{{#!if (au==0)&&(ab==0)
3254{{{#!if br=true
3255}}}}}}}}}
3256{{{#!if !br
3257{{{#!if au=au.toString(), ab=ab.toString()
r252
3258}}}{{{#!if tn="", ps=(au.length==18), ps
3259{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3260}}}}}}{{{#!if !ps&&(au.length<17)
3261{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3262}}}}}}{{{#!if ab.length<18
3263{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3264}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3265}}}}}}
r243
3266##i=34
3267{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3268{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3269}}}{{{#!if ty=ty.toString(), ty.length==19
3270{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3271}}}}}}
3272{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3273{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3274}}}{{{#!if ty=ty.toString(), ty.length==19
3275{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3276}}}}}}{{{#!if ty=+ty
3277}}}}}}
3278{{{#!if ty>ab
3279{{{#!if tn-=1, ab+=+("1"+pd)
3280}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3281}}}}}}
3282{{{#!if !br
r249
3283{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3284{{{#!if ps=true, tw=0
r243
3285}}}}}}
3286{{{#!if !ps
3287{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3288}}}{{{#!if ty=ty.toString(), ty.length==19
3289{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3290}}}}}}
3291{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3292{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3293}}}{{{#!if ty=ty.toString(), ty.length==19
3294{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3295}}}}}}{{{#!if ty=+ty
3296}}}}}}
r256
3297{{{#!if ty>ab
r243
3298{{{#!if au-=1, ab+=+("1"+pd)
3299}}}}}}{{{#!if au-=tx, ab-=ty
r256
3300}}}}}}
3301{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3302}}}
3303{{{#!if (au==0)&&(ab==0)
3304{{{#!if br=true
3305}}}}}}}}}
3306{{{#!if !br
3307{{{#!if au=au.toString(), ab=ab.toString()
r252
3308}}}{{{#!if tn="", ps=(au.length==18), ps
3309{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3310}}}}}}{{{#!if !ps&&(au.length<17)
3311{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3312}}}}}}{{{#!if ab.length<18
3313{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3314}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3315}}}}}}
r243
3316##i=35
3317{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3318{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3319}}}{{{#!if ty=ty.toString(), ty.length==19
3320{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3321}}}}}}
3322{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3323{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3324}}}{{{#!if ty=ty.toString(), ty.length==19
3325{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3326}}}}}}{{{#!if ty=+ty
3327}}}}}}
3328{{{#!if ty>ab
3329{{{#!if tn-=1, ab+=+("1"+pd)
3330}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3331}}}}}}
3332{{{#!if !br
r249
3333{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3334{{{#!if ps=true, tw=0
r243
3335}}}}}}
3336{{{#!if !ps
3337{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3338}}}{{{#!if ty=ty.toString(), ty.length==19
3339{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3340}}}}}}
3341{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3342{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3343}}}{{{#!if ty=ty.toString(), ty.length==19
3344{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3345}}}}}}{{{#!if ty=+ty
3346}}}}}}
r256
3347{{{#!if ty>ab
r243
3348{{{#!if au-=1, ab+=+("1"+pd)
3349}}}}}}{{{#!if au-=tx, ab-=ty
r256
3350}}}}}}
3351{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3352}}}
3353{{{#!if (au==0)&&(ab==0)
3354{{{#!if br=true
3355}}}}}}}}}
3356{{{#!if !br
3357{{{#!if au=au.toString(), ab=ab.toString()
r252
3358}}}{{{#!if tn="", ps=(au.length==18), ps
3359{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3360}}}}}}{{{#!if !ps&&(au.length<17)
3361{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3362}}}}}}{{{#!if ab.length<18
3363{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3364}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3365}}}}}}
r243
3366##i=36
3367{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3368{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3369}}}{{{#!if ty=ty.toString(), ty.length==19
3370{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3371}}}}}}
3372{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3373{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3374}}}{{{#!if ty=ty.toString(), ty.length==19
3375{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3376}}}}}}{{{#!if ty=+ty
3377}}}}}}
3378{{{#!if ty>ab
3379{{{#!if tn-=1, ab+=+("1"+pd)
3380}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3381}}}}}}
3382{{{#!if !br
r249
3383{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3384{{{#!if ps=true, tw=0
r243
3385}}}}}}
3386{{{#!if !ps
3387{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3388}}}{{{#!if ty=ty.toString(), ty.length==19
3389{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3390}}}}}}
3391{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3392{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3393}}}{{{#!if ty=ty.toString(), ty.length==19
3394{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3395}}}}}}{{{#!if ty=+ty
3396}}}}}}
r256
3397{{{#!if ty>ab
r243
3398{{{#!if au-=1, ab+=+("1"+pd)
3399}}}}}}{{{#!if au-=tx, ab-=ty
r256
3400}}}}}}
3401{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3402}}}
3403{{{#!if (au==0)&&(ab==0)
3404{{{#!if br=true
3405}}}}}}}}}
3406{{{#!if !br
3407{{{#!if au=au.toString(), ab=ab.toString()
r252
3408}}}{{{#!if tn="", ps=(au.length==18), ps
3409{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3410}}}}}}{{{#!if !ps&&(au.length<17)
3411{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3412}}}}}}{{{#!if ab.length<18
3413{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3414}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3415}}}}}}
r243
3416##i=37
3417{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3418{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3419}}}{{{#!if ty=ty.toString(), ty.length==19
3420{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3421}}}}}}
3422{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3423{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3424}}}{{{#!if ty=ty.toString(), ty.length==19
3425{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3426}}}}}}{{{#!if ty=+ty
3427}}}}}}
3428{{{#!if ty>ab
3429{{{#!if tn-=1, ab+=+("1"+pd)
3430}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3431}}}}}}
3432{{{#!if !br
r249
3433{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3434{{{#!if ps=true, tw=0
r243
3435}}}}}}
3436{{{#!if !ps
3437{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3438}}}{{{#!if ty=ty.toString(), ty.length==19
3439{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3440}}}}}}
3441{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3442{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3443}}}{{{#!if ty=ty.toString(), ty.length==19
3444{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3445}}}}}}{{{#!if ty=+ty
3446}}}}}}
r256
3447{{{#!if ty>ab
r243
3448{{{#!if au-=1, ab+=+("1"+pd)
3449}}}}}}{{{#!if au-=tx, ab-=ty
r256
3450}}}}}}
3451{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3452}}}
3453{{{#!if (au==0)&&(ab==0)
3454{{{#!if br=true
3455}}}}}}}}}
3456{{{#!if !br
3457{{{#!if au=au.toString(), ab=ab.toString()
r252
3458}}}{{{#!if tn="", ps=(au.length==18), ps
3459{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3460}}}}}}{{{#!if !ps&&(au.length<17)
3461{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3462}}}}}}{{{#!if ab.length<18
3463{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3464}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3465}}}}}}
r243
3466##i=38
3467{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3468{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3469}}}{{{#!if ty=ty.toString(), ty.length==19
3470{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3471}}}}}}
3472{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3473{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3474}}}{{{#!if ty=ty.toString(), ty.length==19
3475{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3476}}}}}}{{{#!if ty=+ty
3477}}}}}}
3478{{{#!if ty>ab
3479{{{#!if tn-=1, ab+=+("1"+pd)
3480}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3481}}}}}}
3482{{{#!if !br
r249
3483{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3484{{{#!if ps=true, tw=0
r243
3485}}}}}}
3486{{{#!if !ps
3487{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3488}}}{{{#!if ty=ty.toString(), ty.length==19
3489{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3490}}}}}}
3491{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3492{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3493}}}{{{#!if ty=ty.toString(), ty.length==19
3494{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3495}}}}}}{{{#!if ty=+ty
3496}}}}}}
r256
3497{{{#!if ty>ab
r243
3498{{{#!if au-=1, ab+=+("1"+pd)
3499}}}}}}{{{#!if au-=tx, ab-=ty
r256
3500}}}}}}
3501{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3502}}}
3503{{{#!if (au==0)&&(ab==0)
3504{{{#!if br=true
3505}}}}}}}}}
3506{{{#!if !br
3507{{{#!if au=au.toString(), ab=ab.toString()
r252
3508}}}{{{#!if tn="", ps=(au.length==18), ps
3509{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3510}}}}}}{{{#!if !ps&&(au.length<17)
3511{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3512}}}}}}{{{#!if ab.length<18
3513{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3514}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3515}}}}}}
r243
3516##i=39
3517{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3518{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3519}}}{{{#!if ty=ty.toString(), ty.length==19
3520{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3521}}}}}}
3522{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3523{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3524}}}{{{#!if ty=ty.toString(), ty.length==19
3525{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3526}}}}}}{{{#!if ty=+ty
3527}}}}}}
3528{{{#!if ty>ab
3529{{{#!if tn-=1, ab+=+("1"+pd)
3530}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3531}}}}}}
3532{{{#!if !br
r249
3533{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3534{{{#!if ps=true, tw=0
r243
3535}}}}}}
3536{{{#!if !ps
3537{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3538}}}{{{#!if ty=ty.toString(), ty.length==19
3539{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3540}}}}}}
3541{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3542{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3543}}}{{{#!if ty=ty.toString(), ty.length==19
3544{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3545}}}}}}{{{#!if ty=+ty
3546}}}}}}
r256
3547{{{#!if ty>ab
r243
3548{{{#!if au-=1, ab+=+("1"+pd)
3549}}}}}}{{{#!if au-=tx, ab-=ty
r256
3550}}}}}}
3551{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3552}}}
3553{{{#!if (au==0)&&(ab==0)
3554{{{#!if br=true
3555}}}}}}}}}
3556{{{#!if !br
3557{{{#!if au=au.toString(), ab=ab.toString()
r252
3558}}}{{{#!if tn="", ps=(au.length==18), ps
3559{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3560}}}}}}{{{#!if !ps&&(au.length<17)
3561{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3562}}}}}}{{{#!if ab.length<18
3563{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3564}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3565}}}}}}
r243
3566##i=40
3567{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3568{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3569}}}{{{#!if ty=ty.toString(), ty.length==19
3570{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3571}}}}}}
3572{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3573{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3574}}}{{{#!if ty=ty.toString(), ty.length==19
3575{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3576}}}}}}{{{#!if ty=+ty
3577}}}}}}
3578{{{#!if ty>ab
3579{{{#!if tn-=1, ab+=+("1"+pd)
3580}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3581}}}}}}
3582{{{#!if !br
r249
3583{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3584{{{#!if ps=true, tw=0
r243
3585}}}}}}
3586{{{#!if !ps
3587{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3588}}}{{{#!if ty=ty.toString(), ty.length==19
3589{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3590}}}}}}
3591{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3592{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3593}}}{{{#!if ty=ty.toString(), ty.length==19
3594{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3595}}}}}}{{{#!if ty=+ty
3596}}}}}}
r256
3597{{{#!if ty>ab
r243
3598{{{#!if au-=1, ab+=+("1"+pd)
3599}}}}}}{{{#!if au-=tx, ab-=ty
r256
3600}}}}}}
3601{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3602}}}
3603{{{#!if (au==0)&&(ab==0)
3604{{{#!if br=true
3605}}}}}}}}}
3606{{{#!if !br
3607{{{#!if au=au.toString(), ab=ab.toString()
r252
3608}}}{{{#!if tn="", ps=(au.length==18), ps
3609{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3610}}}}}}{{{#!if !ps&&(au.length<17)
3611{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3612}}}}}}{{{#!if ab.length<18
3613{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3614}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3615}}}}}}
r243
3616##i=41
3617{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3618{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3619}}}{{{#!if ty=ty.toString(), ty.length==19
3620{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3621}}}}}}
3622{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3623{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3624}}}{{{#!if ty=ty.toString(), ty.length==19
3625{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3626}}}}}}{{{#!if ty=+ty
3627}}}}}}
3628{{{#!if ty>ab
3629{{{#!if tn-=1, ab+=+("1"+pd)
3630}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3631}}}}}}
3632{{{#!if !br
r249
3633{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3634{{{#!if ps=true, tw=0
r243
3635}}}}}}
3636{{{#!if !ps
3637{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3638}}}{{{#!if ty=ty.toString(), ty.length==19
3639{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3640}}}}}}
3641{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3642{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3643}}}{{{#!if ty=ty.toString(), ty.length==19
3644{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3645}}}}}}{{{#!if ty=+ty
3646}}}}}}
r256
3647{{{#!if ty>ab
r243
3648{{{#!if au-=1, ab+=+("1"+pd)
3649}}}}}}{{{#!if au-=tx, ab-=ty
r256
3650}}}}}}
3651{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3652}}}
3653{{{#!if (au==0)&&(ab==0)
3654{{{#!if br=true
3655}}}}}}}}}
3656{{{#!if !br
3657{{{#!if au=au.toString(), ab=ab.toString()
r252
3658}}}{{{#!if tn="", ps=(au.length==18), ps
3659{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3660}}}}}}{{{#!if !ps&&(au.length<17)
3661{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3662}}}}}}{{{#!if ab.length<18
3663{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3664}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3665}}}}}}
r243
3666##i=42
3667{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3668{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3669}}}{{{#!if ty=ty.toString(), ty.length==19
3670{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3671}}}}}}
3672{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3673{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3674}}}{{{#!if ty=ty.toString(), ty.length==19
3675{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3676}}}}}}{{{#!if ty=+ty
3677}}}}}}
3678{{{#!if ty>ab
3679{{{#!if tn-=1, ab+=+("1"+pd)
3680}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3681}}}}}}
3682{{{#!if !br
r249
3683{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3684{{{#!if ps=true, tw=0
r243
3685}}}}}}
3686{{{#!if !ps
3687{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3688}}}{{{#!if ty=ty.toString(), ty.length==19
3689{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3690}}}}}}
3691{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3692{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3693}}}{{{#!if ty=ty.toString(), ty.length==19
3694{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3695}}}}}}{{{#!if ty=+ty
3696}}}}}}
r256
3697{{{#!if ty>ab
r243
3698{{{#!if au-=1, ab+=+("1"+pd)
3699}}}}}}{{{#!if au-=tx, ab-=ty
r256
3700}}}}}}
3701{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3702}}}
3703{{{#!if (au==0)&&(ab==0)
3704{{{#!if br=true
3705}}}}}}}}}
3706{{{#!if !br
3707{{{#!if au=au.toString(), ab=ab.toString()
r252
3708}}}{{{#!if tn="", ps=(au.length==18), ps
3709{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3710}}}}}}{{{#!if !ps&&(au.length<17)
3711{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3712}}}}}}{{{#!if ab.length<18
3713{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3714}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3715}}}}}}
r243
3716##i=43
3717{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3718{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3719}}}{{{#!if ty=ty.toString(), ty.length==19
3720{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3721}}}}}}
3722{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3723{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3724}}}{{{#!if ty=ty.toString(), ty.length==19
3725{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3726}}}}}}{{{#!if ty=+ty
3727}}}}}}
3728{{{#!if ty>ab
3729{{{#!if tn-=1, ab+=+("1"+pd)
3730}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3731}}}}}}
3732{{{#!if !br
r249
3733{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3734{{{#!if ps=true, tw=0
r243
3735}}}}}}
3736{{{#!if !ps
3737{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3738}}}{{{#!if ty=ty.toString(), ty.length==19
3739{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3740}}}}}}
3741{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3742{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3743}}}{{{#!if ty=ty.toString(), ty.length==19
3744{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3745}}}}}}{{{#!if ty=+ty
3746}}}}}}
r256
3747{{{#!if ty>ab
r243
3748{{{#!if au-=1, ab+=+("1"+pd)
3749}}}}}}{{{#!if au-=tx, ab-=ty
r256
3750}}}}}}
3751{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3752}}}
3753{{{#!if (au==0)&&(ab==0)
3754{{{#!if br=true
3755}}}}}}}}}
3756{{{#!if !br
3757{{{#!if au=au.toString(), ab=ab.toString()
r252
3758}}}{{{#!if tn="", ps=(au.length==18), ps
3759{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3760}}}}}}{{{#!if !ps&&(au.length<17)
3761{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3762}}}}}}{{{#!if ab.length<18
3763{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3764}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3765}}}}}}
r243
3766##i=44
3767{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3768{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3769}}}{{{#!if ty=ty.toString(), ty.length==19
3770{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3771}}}}}}
3772{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3773{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3774}}}{{{#!if ty=ty.toString(), ty.length==19
3775{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3776}}}}}}{{{#!if ty=+ty
3777}}}}}}
3778{{{#!if ty>ab
3779{{{#!if tn-=1, ab+=+("1"+pd)
3780}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3781}}}}}}
3782{{{#!if !br
r249
3783{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3784{{{#!if ps=true, tw=0
r243
3785}}}}}}
3786{{{#!if !ps
3787{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3788}}}{{{#!if ty=ty.toString(), ty.length==19
3789{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3790}}}}}}
3791{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3792{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3793}}}{{{#!if ty=ty.toString(), ty.length==19
3794{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3795}}}}}}{{{#!if ty=+ty
3796}}}}}}
r256
3797{{{#!if ty>ab
r243
3798{{{#!if au-=1, ab+=+("1"+pd)
3799}}}}}}{{{#!if au-=tx, ab-=ty
r256
3800}}}}}}
3801{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3802}}}
3803{{{#!if (au==0)&&(ab==0)
3804{{{#!if br=true
3805}}}}}}}}}
3806{{{#!if !br
3807{{{#!if au=au.toString(), ab=ab.toString()
r252
3808}}}{{{#!if tn="", ps=(au.length==18), ps
3809{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3810}}}}}}{{{#!if !ps&&(au.length<17)
3811{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3812}}}}}}{{{#!if ab.length<18
3813{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3814}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3815}}}}}}
r243
3816##i=45
3817{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3818{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3819}}}{{{#!if ty=ty.toString(), ty.length==19
3820{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3821}}}}}}
3822{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3823{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3824}}}{{{#!if ty=ty.toString(), ty.length==19
3825{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3826}}}}}}{{{#!if ty=+ty
3827}}}}}}
3828{{{#!if ty>ab
3829{{{#!if tn-=1, ab+=+("1"+pd)
3830}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3831}}}}}}
3832{{{#!if !br
r249
3833{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3834{{{#!if ps=true, tw=0
r243
3835}}}}}}
3836{{{#!if !ps
3837{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3838}}}{{{#!if ty=ty.toString(), ty.length==19
3839{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3840}}}}}}
3841{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3842{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3843}}}{{{#!if ty=ty.toString(), ty.length==19
3844{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3845}}}}}}{{{#!if ty=+ty
3846}}}}}}
r256
3847{{{#!if ty>ab
r243
3848{{{#!if au-=1, ab+=+("1"+pd)
3849}}}}}}{{{#!if au-=tx, ab-=ty
r256
3850}}}}}}
3851{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3852}}}
3853{{{#!if (au==0)&&(ab==0)
3854{{{#!if br=true
3855}}}}}}}}}
3856{{{#!if !br
3857{{{#!if au=au.toString(), ab=ab.toString()
r252
3858}}}{{{#!if tn="", ps=(au.length==18), ps
3859{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3860}}}}}}{{{#!if !ps&&(au.length<17)
3861{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3862}}}}}}{{{#!if ab.length<18
3863{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3864}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3865}}}}}}
r243
3866##i=46
3867{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3868{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3869}}}{{{#!if ty=ty.toString(), ty.length==19
3870{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3871}}}}}}
3872{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3873{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3874}}}{{{#!if ty=ty.toString(), ty.length==19
3875{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3876}}}}}}{{{#!if ty=+ty
3877}}}}}}
3878{{{#!if ty>ab
3879{{{#!if tn-=1, ab+=+("1"+pd)
3880}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3881}}}}}}
3882{{{#!if !br
r249
3883{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3884{{{#!if ps=true, tw=0
r243
3885}}}}}}
3886{{{#!if !ps
3887{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3888}}}{{{#!if ty=ty.toString(), ty.length==19
3889{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3890}}}}}}
3891{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3892{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3893}}}{{{#!if ty=ty.toString(), ty.length==19
3894{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3895}}}}}}{{{#!if ty=+ty
3896}}}}}}
r256
3897{{{#!if ty>ab
r243
3898{{{#!if au-=1, ab+=+("1"+pd)
3899}}}}}}{{{#!if au-=tx, ab-=ty
r256
3900}}}}}}
3901{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3902}}}
3903{{{#!if (au==0)&&(ab==0)
3904{{{#!if br=true
3905}}}}}}}}}
3906{{{#!if !br
3907{{{#!if au=au.toString(), ab=ab.toString()
r252
3908}}}{{{#!if tn="", ps=(au.length==18), ps
3909{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3910}}}}}}{{{#!if !ps&&(au.length<17)
3911{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3912}}}}}}{{{#!if ab.length<18
3913{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3914}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3915}}}}}}
r243
3916##i=47
3917{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3918{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3919}}}{{{#!if ty=ty.toString(), ty.length==19
3920{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3921}}}}}}
3922{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3923{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3924}}}{{{#!if ty=ty.toString(), ty.length==19
3925{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3926}}}}}}{{{#!if ty=+ty
3927}}}}}}
3928{{{#!if ty>ab
3929{{{#!if tn-=1, ab+=+("1"+pd)
3930}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3931}}}}}}
3932{{{#!if !br
r249
3933{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3934{{{#!if ps=true, tw=0
r243
3935}}}}}}
3936{{{#!if !ps
3937{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3938}}}{{{#!if ty=ty.toString(), ty.length==19
3939{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3940}}}}}}
3941{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3942{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3943}}}{{{#!if ty=ty.toString(), ty.length==19
3944{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3945}}}}}}{{{#!if ty=+ty
3946}}}}}}
r256
3947{{{#!if ty>ab
r243
3948{{{#!if au-=1, ab+=+("1"+pd)
3949}}}}}}{{{#!if au-=tx, ab-=ty
r256
3950}}}}}}
3951{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
3952}}}
3953{{{#!if (au==0)&&(ab==0)
3954{{{#!if br=true
3955}}}}}}}}}
3956{{{#!if !br
3957{{{#!if au=au.toString(), ab=ab.toString()
r252
3958}}}{{{#!if tn="", ps=(au.length==18), ps
3959{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
3960}}}}}}{{{#!if !ps&&(au.length<17)
3961{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
3962}}}}}}{{{#!if ab.length<18
3963{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
3964}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
3965}}}}}}
r243
3966##i=48
3967{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
3968{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
3969}}}{{{#!if ty=ty.toString(), ty.length==19
3970{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3971}}}}}}
3972{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
3973{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
3974}}}{{{#!if ty=ty.toString(), ty.length==19
3975{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3976}}}}}}{{{#!if ty=+ty
3977}}}}}}
3978{{{#!if ty>ab
3979{{{#!if tn-=1, ab+=+("1"+pd)
3980}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
3981}}}}}}
3982{{{#!if !br
r249
3983{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
3984{{{#!if ps=true, tw=0
r243
3985}}}}}}
3986{{{#!if !ps
3987{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
3988}}}{{{#!if ty=ty.toString(), ty.length==19
3989{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3990}}}}}}
3991{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
3992{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
3993}}}{{{#!if ty=ty.toString(), ty.length==19
3994{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
3995}}}}}}{{{#!if ty=+ty
3996}}}}}}
r256
3997{{{#!if ty>ab
r243
3998{{{#!if au-=1, ab+=+("1"+pd)
3999}}}}}}{{{#!if au-=tx, ab-=ty
r256
4000}}}}}}
4001{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4002}}}
4003{{{#!if (au==0)&&(ab==0)
4004{{{#!if br=true
4005}}}}}}}}}
4006{{{#!if !br
4007{{{#!if au=au.toString(), ab=ab.toString()
r252
4008}}}{{{#!if tn="", ps=(au.length==18), ps
4009{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4010}}}}}}{{{#!if !ps&&(au.length<17)
4011{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4012}}}}}}{{{#!if ab.length<18
4013{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4014}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4015}}}}}}
r243
4016##i=49
4017{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4018{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4019}}}{{{#!if ty=ty.toString(), ty.length==19
4020{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4021}}}}}}
4022{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4023{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4024}}}{{{#!if ty=ty.toString(), ty.length==19
4025{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4026}}}}}}{{{#!if ty=+ty
4027}}}}}}
4028{{{#!if ty>ab
4029{{{#!if tn-=1, ab+=+("1"+pd)
4030}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4031}}}}}}
4032{{{#!if !br
r249
4033{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4034{{{#!if ps=true, tw=0
r243
4035}}}}}}
4036{{{#!if !ps
4037{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4038}}}{{{#!if ty=ty.toString(), ty.length==19
4039{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4040}}}}}}
4041{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4042{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4043}}}{{{#!if ty=ty.toString(), ty.length==19
4044{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4045}}}}}}{{{#!if ty=+ty
4046}}}}}}
r256
4047{{{#!if ty>ab
r243
4048{{{#!if au-=1, ab+=+("1"+pd)
4049}}}}}}{{{#!if au-=tx, ab-=ty
r256
4050}}}}}}
4051{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4052}}}
4053{{{#!if (au==0)&&(ab==0)
4054{{{#!if br=true
4055}}}}}}}}}
4056{{{#!if !br
4057{{{#!if au=au.toString(), ab=ab.toString()
r252
4058}}}{{{#!if tn="", ps=(au.length==18), ps
4059{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4060}}}}}}{{{#!if !ps&&(au.length<17)
4061{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4062}}}}}}{{{#!if ab.length<18
4063{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4064}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4065}}}}}}
r243
4066##i=50
4067{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4068{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4069}}}{{{#!if ty=ty.toString(), ty.length==19
4070{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4071}}}}}}
4072{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4073{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4074}}}{{{#!if ty=ty.toString(), ty.length==19
4075{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4076}}}}}}{{{#!if ty=+ty
4077}}}}}}
4078{{{#!if ty>ab
4079{{{#!if tn-=1, ab+=+("1"+pd)
4080}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4081}}}}}}
4082{{{#!if !br
r249
4083{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4084{{{#!if ps=true, tw=0
r243
4085}}}}}}
4086{{{#!if !ps
4087{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4088}}}{{{#!if ty=ty.toString(), ty.length==19
4089{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4090}}}}}}
4091{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4092{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4093}}}{{{#!if ty=ty.toString(), ty.length==19
4094{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4095}}}}}}{{{#!if ty=+ty
4096}}}}}}
r256
4097{{{#!if ty>ab
r243
4098{{{#!if au-=1, ab+=+("1"+pd)
4099}}}}}}{{{#!if au-=tx, ab-=ty
r256
4100}}}}}}
4101{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4102}}}
4103{{{#!if (au==0)&&(ab==0)
4104{{{#!if br=true
4105}}}}}}}}}
4106{{{#!if !br
4107{{{#!if au=au.toString(), ab=ab.toString()
r252
4108}}}{{{#!if tn="", ps=(au.length==18), ps
4109{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4110}}}}}}{{{#!if !ps&&(au.length<17)
4111{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4112}}}}}}{{{#!if ab.length<18
4113{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4114}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4115}}}}}}
r243
4116##i=51
4117{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4118{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4119}}}{{{#!if ty=ty.toString(), ty.length==19
4120{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4121}}}}}}
4122{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4123{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4124}}}{{{#!if ty=ty.toString(), ty.length==19
4125{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4126}}}}}}{{{#!if ty=+ty
4127}}}}}}
4128{{{#!if ty>ab
4129{{{#!if tn-=1, ab+=+("1"+pd)
4130}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4131}}}}}}
4132{{{#!if !br
r249
4133{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4134{{{#!if ps=true, tw=0
r243
4135}}}}}}
4136{{{#!if !ps
4137{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4138}}}{{{#!if ty=ty.toString(), ty.length==19
4139{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4140}}}}}}
4141{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4142{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4143}}}{{{#!if ty=ty.toString(), ty.length==19
4144{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4145}}}}}}{{{#!if ty=+ty
4146}}}}}}
r256
4147{{{#!if ty>ab
r243
4148{{{#!if au-=1, ab+=+("1"+pd)
4149}}}}}}{{{#!if au-=tx, ab-=ty
r256
4150}}}}}}
4151{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4152}}}
4153{{{#!if (au==0)&&(ab==0)
4154{{{#!if br=true
4155}}}}}}}}}
4156{{{#!if !br
4157{{{#!if au=au.toString(), ab=ab.toString()
r252
4158}}}{{{#!if tn="", ps=(au.length==18), ps
4159{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4160}}}}}}{{{#!if !ps&&(au.length<17)
4161{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4162}}}}}}{{{#!if ab.length<18
4163{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4164}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4165}}}}}}
r243
4166##i=52
4167{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4168{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4169}}}{{{#!if ty=ty.toString(), ty.length==19
4170{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4171}}}}}}
4172{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4173{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4174}}}{{{#!if ty=ty.toString(), ty.length==19
4175{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4176}}}}}}{{{#!if ty=+ty
4177}}}}}}
4178{{{#!if ty>ab
4179{{{#!if tn-=1, ab+=+("1"+pd)
4180}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4181}}}}}}
4182{{{#!if !br
r249
4183{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4184{{{#!if ps=true, tw=0
r243
4185}}}}}}
4186{{{#!if !ps
4187{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4188}}}{{{#!if ty=ty.toString(), ty.length==19
4189{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4190}}}}}}
4191{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4192{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4193}}}{{{#!if ty=ty.toString(), ty.length==19
4194{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4195}}}}}}{{{#!if ty=+ty
4196}}}}}}
r256
4197{{{#!if ty>ab
r243
4198{{{#!if au-=1, ab+=+("1"+pd)
4199}}}}}}{{{#!if au-=tx, ab-=ty
r256
4200}}}}}}
4201{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4202}}}
4203{{{#!if (au==0)&&(ab==0)
4204{{{#!if br=true
4205}}}}}}}}}
4206{{{#!if !br
4207{{{#!if au=au.toString(), ab=ab.toString()
r252
4208}}}{{{#!if tn="", ps=(au.length==18), ps
4209{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4210}}}}}}{{{#!if !ps&&(au.length<17)
4211{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4212}}}}}}{{{#!if ab.length<18
4213{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4214}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4215}}}}}}
r243
4216##i=53
4217{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4218{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4219}}}{{{#!if ty=ty.toString(), ty.length==19
4220{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4221}}}}}}
4222{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4223{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4224}}}{{{#!if ty=ty.toString(), ty.length==19
4225{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4226}}}}}}{{{#!if ty=+ty
4227}}}}}}
4228{{{#!if ty>ab
4229{{{#!if tn-=1, ab+=+("1"+pd)
4230}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4231}}}}}}
4232{{{#!if !br
r249
4233{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4234{{{#!if ps=true, tw=0
r243
4235}}}}}}
4236{{{#!if !ps
4237{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4238}}}{{{#!if ty=ty.toString(), ty.length==19
4239{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4240}}}}}}
4241{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4242{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4243}}}{{{#!if ty=ty.toString(), ty.length==19
4244{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4245}}}}}}{{{#!if ty=+ty
4246}}}}}}
r256
4247{{{#!if ty>ab
r243
4248{{{#!if au-=1, ab+=+("1"+pd)
4249}}}}}}{{{#!if au-=tx, ab-=ty
r256
4250}}}}}}
4251{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4252}}}
4253{{{#!if (au==0)&&(ab==0)
4254{{{#!if br=true
4255}}}}}}}}}
4256{{{#!if !br
4257{{{#!if au=au.toString(), ab=ab.toString()
r252
4258}}}{{{#!if tn="", ps=(au.length==18), ps
4259{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4260}}}}}}{{{#!if !ps&&(au.length<17)
4261{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4262}}}}}}{{{#!if ab.length<18
4263{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4264}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4265}}}}}}
r243
4266##i=54
4267{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4268{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4269}}}{{{#!if ty=ty.toString(), ty.length==19
4270{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4271}}}}}}
4272{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4273{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4274}}}{{{#!if ty=ty.toString(), ty.length==19
4275{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4276}}}}}}{{{#!if ty=+ty
4277}}}}}}
4278{{{#!if ty>ab
4279{{{#!if tn-=1, ab+=+("1"+pd)
4280}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4281}}}}}}
4282{{{#!if !br
r249
4283{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4284{{{#!if ps=true, tw=0
r243
4285}}}}}}
4286{{{#!if !ps
4287{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4288}}}{{{#!if ty=ty.toString(), ty.length==19
4289{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4290}}}}}}
4291{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4292{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4293}}}{{{#!if ty=ty.toString(), ty.length==19
4294{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4295}}}}}}{{{#!if ty=+ty
4296}}}}}}
r256
4297{{{#!if ty>ab
r243
4298{{{#!if au-=1, ab+=+("1"+pd)
4299}}}}}}{{{#!if au-=tx, ab-=ty
r256
4300}}}}}}
4301{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4302}}}
4303{{{#!if (au==0)&&(ab==0)
4304{{{#!if br=true
4305}}}}}}}}}
4306{{{#!if !br
4307{{{#!if au=au.toString(), ab=ab.toString()
r252
4308}}}{{{#!if tn="", ps=(au.length==18), ps
4309{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4310}}}}}}{{{#!if !ps&&(au.length<17)
4311{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4312}}}}}}{{{#!if ab.length<18
4313{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4314}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4315}}}}}}
r243
4316##i=55
4317{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4318{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4319}}}{{{#!if ty=ty.toString(), ty.length==19
4320{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4321}}}}}}
4322{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4323{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4324}}}{{{#!if ty=ty.toString(), ty.length==19
4325{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4326}}}}}}{{{#!if ty=+ty
4327}}}}}}
4328{{{#!if ty>ab
4329{{{#!if tn-=1, ab+=+("1"+pd)
4330}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4331}}}}}}
4332{{{#!if !br
r249
4333{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4334{{{#!if ps=true, tw=0
r243
4335}}}}}}
4336{{{#!if !ps
4337{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4338}}}{{{#!if ty=ty.toString(), ty.length==19
4339{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4340}}}}}}
4341{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4342{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4343}}}{{{#!if ty=ty.toString(), ty.length==19
4344{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4345}}}}}}{{{#!if ty=+ty
4346}}}}}}
r256
4347{{{#!if ty>ab
r243
4348{{{#!if au-=1, ab+=+("1"+pd)
4349}}}}}}{{{#!if au-=tx, ab-=ty
r256
4350}}}}}}
4351{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4352}}}
4353{{{#!if (au==0)&&(ab==0)
4354{{{#!if br=true
4355}}}}}}}}}
4356{{{#!if !br
4357{{{#!if au=au.toString(), ab=ab.toString()
r252
4358}}}{{{#!if tn="", ps=(au.length==18), ps
4359{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4360}}}}}}{{{#!if !ps&&(au.length<17)
4361{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4362}}}}}}{{{#!if ab.length<18
4363{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4364}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4365}}}}}}
r243
4366##i=56
4367{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4368{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4369}}}{{{#!if ty=ty.toString(), ty.length==19
4370{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4371}}}}}}
4372{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4373{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4374}}}{{{#!if ty=ty.toString(), ty.length==19
4375{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4376}}}}}}{{{#!if ty=+ty
4377}}}}}}
4378{{{#!if ty>ab
4379{{{#!if tn-=1, ab+=+("1"+pd)
4380}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4381}}}}}}
4382{{{#!if !br
r249
4383{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4384{{{#!if ps=true, tw=0
r243
4385}}}}}}
4386{{{#!if !ps
4387{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4388}}}{{{#!if ty=ty.toString(), ty.length==19
4389{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4390}}}}}}
4391{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4392{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4393}}}{{{#!if ty=ty.toString(), ty.length==19
4394{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4395}}}}}}{{{#!if ty=+ty
4396}}}}}}
r256
4397{{{#!if ty>ab
r243
4398{{{#!if au-=1, ab+=+("1"+pd)
4399}}}}}}{{{#!if au-=tx, ab-=ty
r256
4400}}}}}}
4401{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4402}}}
4403{{{#!if (au==0)&&(ab==0)
4404{{{#!if br=true
4405}}}}}}}}}
4406{{{#!if !br
4407{{{#!if au=au.toString(), ab=ab.toString()
r252
4408}}}{{{#!if tn="", ps=(au.length==18), ps
4409{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4410}}}}}}{{{#!if !ps&&(au.length<17)
4411{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4412}}}}}}{{{#!if ab.length<18
4413{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4414}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4415}}}}}}
r243
4416##i=57
4417{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4418{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4419}}}{{{#!if ty=ty.toString(), ty.length==19
4420{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4421}}}}}}
4422{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4423{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4424}}}{{{#!if ty=ty.toString(), ty.length==19
4425{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4426}}}}}}{{{#!if ty=+ty
4427}}}}}}
4428{{{#!if ty>ab
4429{{{#!if tn-=1, ab+=+("1"+pd)
4430}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4431}}}}}}
4432{{{#!if !br
r249
4433{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4434{{{#!if ps=true, tw=0
r243
4435}}}}}}
4436{{{#!if !ps
4437{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4438}}}{{{#!if ty=ty.toString(), ty.length==19
4439{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4440}}}}}}
4441{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4442{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4443}}}{{{#!if ty=ty.toString(), ty.length==19
4444{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4445}}}}}}{{{#!if ty=+ty
4446}}}}}}
r256
4447{{{#!if ty>ab
r243
4448{{{#!if au-=1, ab+=+("1"+pd)
4449}}}}}}{{{#!if au-=tx, ab-=ty
r256
4450}}}}}}
4451{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4452}}}
4453{{{#!if (au==0)&&(ab==0)
4454{{{#!if br=true
4455}}}}}}}}}
4456{{{#!if !br
4457{{{#!if au=au.toString(), ab=ab.toString()
r252
4458}}}{{{#!if tn="", ps=(au.length==18), ps
4459{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4460}}}}}}{{{#!if !ps&&(au.length<17)
4461{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4462}}}}}}{{{#!if ab.length<18
4463{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4464}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4465}}}}}}
r243
4466##i=58
4467{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4468{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4469}}}{{{#!if ty=ty.toString(), ty.length==19
4470{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4471}}}}}}
4472{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4473{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4474}}}{{{#!if ty=ty.toString(), ty.length==19
4475{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4476}}}}}}{{{#!if ty=+ty
4477}}}}}}
4478{{{#!if ty>ab
4479{{{#!if tn-=1, ab+=+("1"+pd)
4480}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4481}}}}}}
4482{{{#!if !br
r249
4483{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4484{{{#!if ps=true, tw=0
r243
4485}}}}}}
4486{{{#!if !ps
4487{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4488}}}{{{#!if ty=ty.toString(), ty.length==19
4489{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4490}}}}}}
4491{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4492{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4493}}}{{{#!if ty=ty.toString(), ty.length==19
4494{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4495}}}}}}{{{#!if ty=+ty
4496}}}}}}
r256
4497{{{#!if ty>ab
r243
4498{{{#!if au-=1, ab+=+("1"+pd)
4499}}}}}}{{{#!if au-=tx, ab-=ty
r256
4500}}}}}}
4501{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4502}}}
4503{{{#!if (au==0)&&(ab==0)
4504{{{#!if br=true
4505}}}}}}}}}
4506{{{#!if !br
4507{{{#!if au=au.toString(), ab=ab.toString()
r252
4508}}}{{{#!if tn="", ps=(au.length==18), ps
4509{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4510}}}}}}{{{#!if !ps&&(au.length<17)
4511{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4512}}}}}}{{{#!if ab.length<18
4513{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4514}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4515}}}}}}
r243
4516##i=59
4517{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4518{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4519}}}{{{#!if ty=ty.toString(), ty.length==19
4520{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4521}}}}}}
4522{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4523{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4524}}}{{{#!if ty=ty.toString(), ty.length==19
4525{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4526}}}}}}{{{#!if ty=+ty
4527}}}}}}
4528{{{#!if ty>ab
4529{{{#!if tn-=1, ab+=+("1"+pd)
4530}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4531}}}}}}
4532{{{#!if !br
r249
4533{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4534{{{#!if ps=true, tw=0
r243
4535}}}}}}
4536{{{#!if !ps
4537{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4538}}}{{{#!if ty=ty.toString(), ty.length==19
4539{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4540}}}}}}
4541{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4542{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4543}}}{{{#!if ty=ty.toString(), ty.length==19
4544{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4545}}}}}}{{{#!if ty=+ty
4546}}}}}}
r256
4547{{{#!if ty>ab
r243
4548{{{#!if au-=1, ab+=+("1"+pd)
4549}}}}}}{{{#!if au-=tx, ab-=ty
r256
4550}}}}}}
4551{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4552}}}
4553{{{#!if (au==0)&&(ab==0)
4554{{{#!if br=true
4555}}}}}}}}}
4556{{{#!if !br
4557{{{#!if au=au.toString(), ab=ab.toString()
r252
4558}}}{{{#!if tn="", ps=(au.length==18), ps
4559{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4560}}}}}}{{{#!if !ps&&(au.length<17)
4561{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4562}}}}}}{{{#!if ab.length<18
4563{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4564}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4565}}}}}}
r243
4566##i=60
4567{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4568{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4569}}}{{{#!if ty=ty.toString(), ty.length==19
4570{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4571}}}}}}
4572{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4573{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4574}}}{{{#!if ty=ty.toString(), ty.length==19
4575{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4576}}}}}}{{{#!if ty=+ty
4577}}}}}}
4578{{{#!if ty>ab
4579{{{#!if tn-=1, ab+=+("1"+pd)
4580}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4581}}}}}}
4582{{{#!if !br
r249
4583{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4584{{{#!if ps=true, tw=0
r243
4585}}}}}}
4586{{{#!if !ps
4587{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4588}}}{{{#!if ty=ty.toString(), ty.length==19
4589{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4590}}}}}}
4591{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4592{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4593}}}{{{#!if ty=ty.toString(), ty.length==19
4594{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4595}}}}}}{{{#!if ty=+ty
4596}}}}}}
r256
4597{{{#!if ty>ab
r243
4598{{{#!if au-=1, ab+=+("1"+pd)
4599}}}}}}{{{#!if au-=tx, ab-=ty
r256
4600}}}}}}
4601{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4602}}}
4603{{{#!if (au==0)&&(ab==0)
4604{{{#!if br=true
4605}}}}}}}}}
4606{{{#!if !br
4607{{{#!if au=au.toString(), ab=ab.toString()
r252
4608}}}{{{#!if tn="", ps=(au.length==18), ps
4609{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4610}}}}}}{{{#!if !ps&&(au.length<17)
4611{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4612}}}}}}{{{#!if ab.length<18
4613{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4614}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4615}}}}}}
r243
4616##i=61
4617{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4618{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4619}}}{{{#!if ty=ty.toString(), ty.length==19
4620{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4621}}}}}}
4622{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4623{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4624}}}{{{#!if ty=ty.toString(), ty.length==19
4625{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4626}}}}}}{{{#!if ty=+ty
4627}}}}}}
4628{{{#!if ty>ab
4629{{{#!if tn-=1, ab+=+("1"+pd)
4630}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4631}}}}}}
4632{{{#!if !br
r249
4633{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4634{{{#!if ps=true, tw=0
r243
4635}}}}}}
4636{{{#!if !ps
4637{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4638}}}{{{#!if ty=ty.toString(), ty.length==19
4639{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4640}}}}}}
4641{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4642{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4643}}}{{{#!if ty=ty.toString(), ty.length==19
4644{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4645}}}}}}{{{#!if ty=+ty
4646}}}}}}
r256
4647{{{#!if ty>ab
r243
4648{{{#!if au-=1, ab+=+("1"+pd)
4649}}}}}}{{{#!if au-=tx, ab-=ty
r256
4650}}}}}}
4651{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4652}}}
4653{{{#!if (au==0)&&(ab==0)
4654{{{#!if br=true
4655}}}}}}}}}
4656{{{#!if !br
4657{{{#!if au=au.toString(), ab=ab.toString()
r252
4658}}}{{{#!if tn="", ps=(au.length==18), ps
4659{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4660}}}}}}{{{#!if !ps&&(au.length<17)
4661{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4662}}}}}}{{{#!if ab.length<18
4663{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4664}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4665}}}}}}
r243
4666##i=62
4667{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4668{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4669}}}{{{#!if ty=ty.toString(), ty.length==19
4670{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4671}}}}}}
4672{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4673{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4674}}}{{{#!if ty=ty.toString(), ty.length==19
4675{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4676}}}}}}{{{#!if ty=+ty
4677}}}}}}
4678{{{#!if ty>ab
4679{{{#!if tn-=1, ab+=+("1"+pd)
4680}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4681}}}}}}
4682{{{#!if !br
r249
4683{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4684{{{#!if ps=true, tw=0
r243
4685}}}}}}
4686{{{#!if !ps
4687{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4688}}}{{{#!if ty=ty.toString(), ty.length==19
4689{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4690}}}}}}
4691{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4692{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4693}}}{{{#!if ty=ty.toString(), ty.length==19
4694{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4695}}}}}}{{{#!if ty=+ty
4696}}}}}}
r256
4697{{{#!if ty>ab
r243
4698{{{#!if au-=1, ab+=+("1"+pd)
4699}}}}}}{{{#!if au-=tx, ab-=ty
r256
4700}}}}}}
4701{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4702}}}
4703{{{#!if (au==0)&&(ab==0)
4704{{{#!if br=true
4705}}}}}}}}}
4706{{{#!if !br
4707{{{#!if au=au.toString(), ab=ab.toString()
r252
4708}}}{{{#!if tn="", ps=(au.length==18), ps
4709{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4710}}}}}}{{{#!if !ps&&(au.length<17)
4711{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4712}}}}}}{{{#!if ab.length<18
4713{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4714}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4715}}}}}}
r243
4716##i=63
4717{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4718{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4719}}}{{{#!if ty=ty.toString(), ty.length==19
4720{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4721}}}}}}
4722{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4723{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4724}}}{{{#!if ty=ty.toString(), ty.length==19
4725{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4726}}}}}}{{{#!if ty=+ty
4727}}}}}}
4728{{{#!if ty>ab
4729{{{#!if tn-=1, ab+=+("1"+pd)
4730}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4731}}}}}}
4732{{{#!if !br
r249
4733{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4734{{{#!if ps=true, tw=0
r243
4735}}}}}}
4736{{{#!if !ps
4737{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4738}}}{{{#!if ty=ty.toString(), ty.length==19
4739{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4740}}}}}}
4741{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4742{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4743}}}{{{#!if ty=ty.toString(), ty.length==19
4744{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4745}}}}}}{{{#!if ty=+ty
4746}}}}}}
r256
4747{{{#!if ty>ab
r243
4748{{{#!if au-=1, ab+=+("1"+pd)
4749}}}}}}{{{#!if au-=tx, ab-=ty
r256
4750}}}}}}
4751{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4752}}}
4753{{{#!if (au==0)&&(ab==0)
4754{{{#!if br=true
4755}}}}}}}}}
4756{{{#!if !br
4757{{{#!if au=au.toString(), ab=ab.toString()
r252
4758}}}{{{#!if tn="", ps=(au.length==18), ps
4759{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4760}}}}}}{{{#!if !ps&&(au.length<17)
4761{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4762}}}}}}{{{#!if ab.length<18
4763{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4764}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4765}}}}}}
r243
4766##i=64
4767{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4768{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4769}}}{{{#!if ty=ty.toString(), ty.length==19
4770{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4771}}}}}}
4772{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4773{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4774}}}{{{#!if ty=ty.toString(), ty.length==19
4775{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4776}}}}}}{{{#!if ty=+ty
4777}}}}}}
4778{{{#!if ty>ab
4779{{{#!if tn-=1, ab+=+("1"+pd)
4780}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4781}}}}}}
4782{{{#!if !br
r249
4783{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4784{{{#!if ps=true, tw=0
r243
4785}}}}}}
4786{{{#!if !ps
4787{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4788}}}{{{#!if ty=ty.toString(), ty.length==19
4789{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4790}}}}}}
4791{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4792{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4793}}}{{{#!if ty=ty.toString(), ty.length==19
4794{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4795}}}}}}{{{#!if ty=+ty
4796}}}}}}
r256
4797{{{#!if ty>ab
r243
4798{{{#!if au-=1, ab+=+("1"+pd)
4799}}}}}}{{{#!if au-=tx, ab-=ty
r256
4800}}}}}}
4801{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4802}}}
4803{{{#!if (au==0)&&(ab==0)
4804{{{#!if br=true
4805}}}}}}}}}
4806{{{#!if !br
4807{{{#!if au=au.toString(), ab=ab.toString()
r252
4808}}}{{{#!if tn="", ps=(au.length==18), ps
4809{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4810}}}}}}{{{#!if !ps&&(au.length<17)
4811{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4812}}}}}}{{{#!if ab.length<18
4813{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4814}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4815}}}}}}
r243
4816##i=65
4817{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4818{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4819}}}{{{#!if ty=ty.toString(), ty.length==19
4820{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4821}}}}}}
4822{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4823{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4824}}}{{{#!if ty=ty.toString(), ty.length==19
4825{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4826}}}}}}{{{#!if ty=+ty
4827}}}}}}
4828{{{#!if ty>ab
4829{{{#!if tn-=1, ab+=+("1"+pd)
4830}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4831}}}}}}
4832{{{#!if !br
r249
4833{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4834{{{#!if ps=true, tw=0
r243
4835}}}}}}
4836{{{#!if !ps
4837{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4838}}}{{{#!if ty=ty.toString(), ty.length==19
4839{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4840}}}}}}
4841{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4842{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4843}}}{{{#!if ty=ty.toString(), ty.length==19
4844{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4845}}}}}}{{{#!if ty=+ty
4846}}}}}}
r256
4847{{{#!if ty>ab
r243
4848{{{#!if au-=1, ab+=+("1"+pd)
4849}}}}}}{{{#!if au-=tx, ab-=ty
r256
4850}}}}}}
4851{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4852}}}
4853{{{#!if (au==0)&&(ab==0)
4854{{{#!if br=true
4855}}}}}}}}}
4856{{{#!if !br
4857{{{#!if au=au.toString(), ab=ab.toString()
r252
4858}}}{{{#!if tn="", ps=(au.length==18), ps
4859{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4860}}}}}}{{{#!if !ps&&(au.length<17)
4861{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4862}}}}}}{{{#!if ab.length<18
4863{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4864}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4865}}}}}}
r243
4866##i=66
4867{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4868{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4869}}}{{{#!if ty=ty.toString(), ty.length==19
4870{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4871}}}}}}
4872{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4873{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4874}}}{{{#!if ty=ty.toString(), ty.length==19
4875{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4876}}}}}}{{{#!if ty=+ty
4877}}}}}}
4878{{{#!if ty>ab
4879{{{#!if tn-=1, ab+=+("1"+pd)
4880}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4881}}}}}}
4882{{{#!if !br
r249
4883{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4884{{{#!if ps=true, tw=0
r243
4885}}}}}}
4886{{{#!if !ps
4887{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4888}}}{{{#!if ty=ty.toString(), ty.length==19
4889{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4890}}}}}}
4891{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4892{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4893}}}{{{#!if ty=ty.toString(), ty.length==19
4894{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4895}}}}}}{{{#!if ty=+ty
4896}}}}}}
r256
4897{{{#!if ty>ab
r243
4898{{{#!if au-=1, ab+=+("1"+pd)
4899}}}}}}{{{#!if au-=tx, ab-=ty
r256
4900}}}}}}
4901{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4902}}}
4903{{{#!if (au==0)&&(ab==0)
4904{{{#!if br=true
4905}}}}}}}}}
4906{{{#!if !br
4907{{{#!if au=au.toString(), ab=ab.toString()
r252
4908}}}{{{#!if tn="", ps=(au.length==18), ps
4909{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4910}}}}}}{{{#!if !ps&&(au.length<17)
4911{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4912}}}}}}{{{#!if ab.length<18
4913{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4914}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4915}}}}}}
r243
4916##i=67
4917{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4918{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4919}}}{{{#!if ty=ty.toString(), ty.length==19
4920{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4921}}}}}}
4922{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4923{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4924}}}{{{#!if ty=ty.toString(), ty.length==19
4925{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4926}}}}}}{{{#!if ty=+ty
4927}}}}}}
4928{{{#!if ty>ab
4929{{{#!if tn-=1, ab+=+("1"+pd)
4930}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4931}}}}}}
4932{{{#!if !br
r249
4933{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4934{{{#!if ps=true, tw=0
r243
4935}}}}}}
4936{{{#!if !ps
4937{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4938}}}{{{#!if ty=ty.toString(), ty.length==19
4939{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4940}}}}}}
4941{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4942{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4943}}}{{{#!if ty=ty.toString(), ty.length==19
4944{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4945}}}}}}{{{#!if ty=+ty
4946}}}}}}
r256
4947{{{#!if ty>ab
r243
4948{{{#!if au-=1, ab+=+("1"+pd)
4949}}}}}}{{{#!if au-=tx, ab-=ty
r256
4950}}}}}}
4951{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
4952}}}
4953{{{#!if (au==0)&&(ab==0)
4954{{{#!if br=true
4955}}}}}}}}}
4956{{{#!if !br
4957{{{#!if au=au.toString(), ab=ab.toString()
r252
4958}}}{{{#!if tn="", ps=(au.length==18), ps
4959{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
4960}}}}}}{{{#!if !ps&&(au.length<17)
4961{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
4962}}}}}}{{{#!if ab.length<18
4963{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
4964}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
4965}}}}}}
r243
4966##i=68
4967{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
4968{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
4969}}}{{{#!if ty=ty.toString(), ty.length==19
4970{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4971}}}}}}
4972{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
4973{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
4974}}}{{{#!if ty=ty.toString(), ty.length==19
4975{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4976}}}}}}{{{#!if ty=+ty
4977}}}}}}
4978{{{#!if ty>ab
4979{{{#!if tn-=1, ab+=+("1"+pd)
4980}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
4981}}}}}}
4982{{{#!if !br
r249
4983{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
4984{{{#!if ps=true, tw=0
r243
4985}}}}}}
4986{{{#!if !ps
4987{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
4988}}}{{{#!if ty=ty.toString(), ty.length==19
4989{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4990}}}}}}
4991{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
4992{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
4993}}}{{{#!if ty=ty.toString(), ty.length==19
4994{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
4995}}}}}}{{{#!if ty=+ty
4996}}}}}}
r256
4997{{{#!if ty>ab
r243
4998{{{#!if au-=1, ab+=+("1"+pd)
4999}}}}}}{{{#!if au-=tx, ab-=ty
r256
5000}}}}}}
5001{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
5002}}}
5003{{{#!if (au==0)&&(ab==0)
5004{{{#!if br=true
5005}}}}}}}}}
5006{{{#!if !br
5007{{{#!if au=au.toString(), ab=ab.toString()
r252
5008}}}{{{#!if tn="", ps=(au.length==18), ps
5009{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
5010}}}}}}{{{#!if !ps&&(au.length<17)
5011{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
5012}}}}}}{{{#!if ab.length<18
5013{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
5014}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
5015}}}}}}
r243
5016##i=69
5017{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
5018{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
5019}}}{{{#!if ty=ty.toString(), ty.length==19
5020{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
5021}}}}}}
5022{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
5023{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
5024}}}{{{#!if ty=ty.toString(), ty.length==19
5025{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
5026}}}}}}{{{#!if ty=+ty
5027}}}}}}
5028{{{#!if ty>ab
5029{{{#!if tn-=1, ab+=+("1"+pd)
5030}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
5031}}}}}}
5032{{{#!if !br
r249
5033{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
5034{{{#!if ps=true, tw=0
r243
5035}}}}}}
5036{{{#!if !ps
5037{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
5038}}}{{{#!if ty=ty.toString(), ty.length==19
5039{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
5040}}}}}}
5041{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
5042{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
5043}}}{{{#!if ty=ty.toString(), ty.length==19
5044{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
5045}}}}}}{{{#!if ty=+ty
5046}}}}}}
r256
5047{{{#!if ty>ab
r243
5048{{{#!if au-=1, ab+=+("1"+pd)
5049}}}}}}{{{#!if au-=tx, ab-=ty
r256
5050}}}}}}
5051{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
5052}}}
5053{{{#!if (au==0)&&(ab==0)
5054{{{#!if br=true
5055}}}}}}}}}
5056{{{#!if !br
5057{{{#!if au=au.toString(), ab=ab.toString()
r252
5058}}}{{{#!if tn="", ps=(au.length==18), ps
5059{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
5060}}}}}}{{{#!if !ps&&(au.length<17)
5061{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
5062}}}}}}{{{#!if ab.length<18
5063{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
5064}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
5065}}}}}}
r243
5066##i=70
5067{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
5068{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
5069}}}{{{#!if ty=ty.toString(), ty.length==19
5070{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
5071}}}}}}
5072{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
5073{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
5074}}}{{{#!if ty=ty.toString(), ty.length==19
5075{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
5076}}}}}}{{{#!if ty=+ty
5077}}}}}}
5078{{{#!if ty>ab
5079{{{#!if tn-=1, ab+=+("1"+pd)
5080}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
5081}}}}}}
5082{{{#!if !br
r249
5083{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
5084{{{#!if ps=true, tw=0
r243
5085}}}}}}
5086{{{#!if !ps
5087{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
5088}}}{{{#!if ty=ty.toString(), ty.length==19
5089{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
5090}}}}}}
5091{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
5092{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
5093}}}{{{#!if ty=ty.toString(), ty.length==19
5094{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
5095}}}}}}{{{#!if ty=+ty
5096}}}}}}
r256
5097{{{#!if ty>ab
r243
5098{{{#!if au-=1, ab+=+("1"+pd)
5099}}}}}}{{{#!if au-=tx, ab-=ty
r256
5100}}}}}}
5101{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
5102}}}
5103{{{#!if (au==0)&&(ab==0)
5104{{{#!if br=true
5105}}}}}}}}}
5106{{{#!if !br
5107{{{#!if au=au.toString(), ab=ab.toString()
r252
5108}}}{{{#!if tn="", ps=(au.length==18), ps
5109{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
5110}}}}}}{{{#!if !ps&&(au.length<17)
5111{{{#!if au=pd+au, au=au.substr(au.length-17,17)
r243
5112}}}}}}{{{#!if ab.length<18
5113{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
5114}}}}}}{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
r256
5115}}}}}}
r243
5116##i=71
5117{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
5118{{{#!if tn+=pd, tn=+tn, tz=tn/bu, tx=bu*tz, ty=bb*tz
5119}}}{{{#!if ty=ty.toString(), ty.length==19
5120{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
5121}}}}}}
5122{{{#!if ty=+ty, (tx>tn)||((tx==tn)&&(ty>0))
5123{{{#!if tz-=1, tx=bu*tz, ty=bb*tz
5124}}}{{{#!if ty=ty.toString(), ty.length==19
5125{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
5126}}}}}}{{{#!if ty=+ty
5127}}}}}}
5128{{{#!if ty>ab
5129{{{#!if tn-=1, ab+=+("1"+pd)
5130}}}}}}{{{#!if au+=(tn-tx), ab-=ty, tn=""
5131}}}}}}
5132{{{#!if !br
r249
5133{{{#!if ps=false, (au<bu)||((au==bu)&&(ab<bb))
r256
5134{{{#!if ps=true, tw=0
r243
5135}}}}}}
5136{{{#!if !ps
5137{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
5138}}}{{{#!if ty=ty.toString(), ty.length==19
5139{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
5140}}}}}}
5141{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
5142{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
5143}}}{{{#!if ty=ty.toString(), ty.length==19
5144{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
5145}}}}}}{{{#!if ty=+ty
5146}}}}}}
r256
5147{{{#!if ty>ab
r243
5148{{{#!if au-=1, ab+=+("1"+pd)
5149}}}}}}{{{#!if au-=tx, ab-=ty
r256
5150}}}}}}
5151{{{#!if tw+=tz, tw=tw.toString(), tm+=tw
r243
5152}}}
5153{{{#!if (au==0)&&(ab==0)
5154{{{#!if br=true
r256
5155}}}}}}}}}
r285
5156tn을 빈 문자열로 초기화하고 변수 ts를 가져옵니다. 마지막 72회까지 몫을 구하는 계산을 했음에도 불구하고 나머지가 나누어떨어져 0이 되지 않는다면 tn을 "..."로, ts를 true로 바꿉니다.
5157{{{#!if tn="", !br
r245
5158{{{#!if tn="...", ts=true
r247
5159}}}}}}
r229
5160
r196
5161##rs 매기기
r248
5162앞에 매겼던 ac와 bc로 판별식을 만듭니다. i=ac-bc로 둡니다. a의 가장 큰 자리와 b의 가장 큰 자리가 얼마나 차이나는가에 따라 몫에 매기는 소수점 위치가 달라집니다. i>=-35 (ac==-18이고 bc==17일 경우), i<=35 (ac==17이고 bc=-18일 경우)입니다.
r264
5163{{{#!if i=ac-bc
5164}}}
r272
5165a에서 b를 나누면 몫을 10^i 의 자리부터 매기게 됩니다. 소수점 아랫부분까지 몫 기록이 이어지면 상관이 없겠으나, 몫이 소수가 아닌 정수로 기록될 때 실제 자릿수에 해당하는 길이보다 (금방 나누어떨어져) 몫이 짧게 기록되고 그치는 경우 남는 자리에 자동적으로 0을 채워주지 않게 됩니다. 이러면 수동으로 0을 채워주어야 하며, (i==0일 경우 10^0의 자리부터 몫을 기록하므로 10^1과 같거나 큰 자리부터 기록할 경우 곧) i>0일 때에만 의미가 있습니다.
5166이를테면 4000/2를 계산하는 경우 몫이 "2"까지만 기록되며 뒤에 000은 수동으로 채워주어야 합니다.
5167{{{#!if i>0
5168몫은 tm으로 기록되므로 tm의 길이를 따집니다. i가 양수이고 몫이 정수로 나누어떨어질 경우, tm의 길이가 적어도 i+1이 되게 맞춥니다.
5169{{{#!if i+1>tm.length
5170i+1보타 tm의 길이가 작은 경우 i==35인 경우를 감안하여 tm의 뒷부분을 pd+pd --더블 패드--로 채운 다음 i+1길이만큼 오려냅니다.
5171{{{#!if tm+=pd+pd, tm=tm.substr(0,i+1)
5172}}}}}}}}}
5173
r248
5174i가 18 이상 (18 이상 35 이하)이면 rs를 매길 수 있습니다. 몫을 적어놓은 문자열 tm의 0번 index에 들어가는 문자부터 i에서 18을 뺀 값의 index에 들어가는 문자까지를 rs로 두며, rs의 문자열 길이는 i-18+1 곧 i-17입니다.
r264
5175{{{#!if i>=18
r248
5176tm에서 rs를 오려낸 문자열을 tm으로 다시 둡니다.
5177{{{#!if rs=tm.substr(0,i-17), tm=tm.substr(i-17)
5178}}}}}}
r264
5179
r196
5180##ru 매기기
r284
5181ps를 먼저 false로 초기화한 다음, i>=18 이 되(어 rs를 매기)는 경우 ps를 true로 맞춥니다.
5182{{{#!if ps=false, i>=18
r264
5183{{{#!if ps=true
r248
5184}}}}}}
r264
5185ps가 true이면 문자열 tm에서 18번째 자리까지를 ru로 두고, tm에서 ru를 오려낸 문자열을 tm으로 둡니다.
5186{{{#!if ps
5187{{{#!if ru=tm.substr(0,18), tm=tm.substr(18)
5188}}}}}}
5189ps가 false이고 (i가 충분히 큰 값이 아니고) i가 0 이상 (0 이상 17 이하)인 수라면 ru를 매길 수 있으며 문자열의 길이는 i+1이 됩니다.
5190{{{#!if !ps&&(i>=0)
r261
5191{{{#!if ru=tm.substr(0,i+1), tm=tm.substr(i+1)
r248
5192}}}}}}
r196
5193
5194##rb 매기기
r264
5195i>=0이 되(어 ru를 매기)는 경우 ps를 true로 맞춥니다.
r248
5196{{{#!if i>=0
r264
5197{{{#!if ps=true
r260
5198}}}}}}
r264
5199ps가 true이면 문자열 tm에서 18번째 자리까지를 rb로 두고, tm에서 rb를 오려낸 문자열을 tm으로 둡니다.
5200{{{#!if ps
5201{{{#!if rb=tm.substr(0,18), tm=tm.substr(18)
r248
5202}}}}}}
r264
5203ps가 false이고 i가 -18 이상 (-18 이상 -1 이하)이면 rb를 매길 수 있습니다.
r266
5204이 때 몫으로 문자열의 길이는 i+18+1 곧 i+19가 되며 그 앞부분은 0으로 채워집니다.
5205몫으로 i+19개의 자리가 채워진다면, 몫 앞을 0으로 채우는 수량은 18에서 i+19를 뺀 -i-1이 됩니다.
5206이것을 substr을 이용하여 (18자리 문자열인) pd의 substr로 채워보자면
520718에서 (-i-1)을 뺀 i+19 번부터 끝까지 해당하는 문자열로 채우면 됩니다.
r292
5208{{{#!if !ps
5209{{{#!if i>=-18
r266
5210{{{#!if rb=tm.substr(0,i+19), tm=tm.substr(i+19), rb=pd.substr(i+19)+rb
r264
5211}}}}}}
r292
5212만일 i<0이고 i가 -18보다 작아 rb에 몫을 기록하지 않고 rb보다 더 아래 자리에 기록하게 된다면 rb의 18자리를 모두 0으로 채웁니다.
5213{{{#!if i<-18
5214{{{#!if rb=pd
5215}}}}}}
5216}}}
r196
5217
5218##ri 매기기
r264
5219i>=-18이 되(어 rb를 매기)는 경우 ps를 true로 맞춥니다.
r248
5220{{{#!if i>=-18
r264
5221{{{#!if ps=true
r260
5222}}}}}}
r264
5223ps가 true이면 rb와 같은 방법으로 ri를 매기고, tm을 다시 정의합니다.
5224{{{#!if ps
5225{{{#!if ri=tm.substr(0,18), tm=tm.substr(18)
r248
5226}}}}}}
r264
5227ps가 false이며 i가 -19 이하 (-36이상 -19 이하이나, i의 최소값은 -35)이면 ri를 매길 수 있습니다. rb와 같습니다.
5228{{{#!if !ps&&(i>=-36)
r266
5229{{{#!if ri=tm.substr(0,i+37), tm=tm.substr(i+37), ri=pd.substr(i+37)+ri
r264
5230}}}
5231}}}
5232
r281
5233ri까지 몫을 기록했음에도 불구하고 여전히 몫이 남는다면 ... 처리를 하고 ts를 true로 바꿉니다.
r273
5234{{{#!if tm.length>0
r281
5235{{{#!if tn="...", ts=true
r273
5236}}}}}}
5237
r231
5238여기까지가 나눗셈의 계산과정입니다.
r194
5239}}}
5240
r261
5241##== 계산 결과 표시 정리하기 ==
r302
5242##=== 결과값 표시 정리하기 ===
r231
5243연산이 끝났으면 표기된 숫자를 정리합니다.
5244
r285
5245##rs, ru 정리 부분
r304
5246먼저 ru를 (곱셈연산에서 정수값으로 나올 수 있고, 나눗셈에서 몫이 1보다 작은 값이 나오는 경우같이 값을 부여하지 않았다면 초기화할 때 정의했던 정수 0인 채로 있으므로) 문자열로 바꿉니다.
r164
5247{{{#!if ru=ru.toString()
r262
5248}}}
524918자리씩 끊어 표기하므로 소수점 위 19~36번째 자리에 해당하는 rs값이 (가령 곱셈에서, 곱한 값을 더한 결과가) 0일 경우 rs를 빈 문자열로 바꿉니다. 이 때 ru를 정수로 바꿔 ru 왼쪽에 있는 0들을 지운 다음, ru를 문자열로 바꿉니다.
5250{{{#!if +rs==0
5251{{{#!if rs="", ru=+ru, ru=ru.toString()
5252}}}}}}
5253
5254계산과정에서 ru의 윗자리인 rs값이 0보다 클 경우, 1~18번째 자리인 ru에 빈 자리를 채우도록 ru의 왼쪽을 0으로 채웁니다.
5255{{{#!if +rs>0
r228
5256{{{#!if rs=rs.toString(), ru=pd+ru, ru=ru.substr(ru.length-18, 18)
r262
5257}}}
5258rs를 정수로 바꿔 rs 앞에 있는 0들을 지운 다음 rs를 문자열로 바꿉니다.
5259{{{#!if rs=+rs, rs=rs.toString()
r171
5260}}}}}}
r156
5261
r285
5262##rb, ri 정리 부분
r287
5263i보다 소수점 아래부분을 더 써내려가야 하는 상황이 아닌(나눗셈에서 ts가 false인) 경우에서, 소수점 아래 19~36번째 자리에 해당하는 ri값이 0일 경우 ri를 빈 문자열로 바꿉니다.
r179
5264이 때 ri와 rb가 모두 0일 경우 rb도 빈 문자열로 바꾸고 rp=0으로 둡니다.
r285
5265{{{#!if !ts
r273
5266{{{#!if +ri==0
r164
5267{{{#!if ri=""
r273
5268}}}{{{#!if +rb==0
r179
5269{{{#!if rb="", rp=0
r285
5270}}}}}}}}}}}}
r179
5271
r285
5272ri가 빈 문자열이 아닐 (+ri가 0보다 클) 때 true를 주는 논리값으로 ps를 정의합니다.
5273{{{#!if ps=(+ri>0)
5274}}}
r164
5275
r287
5276{{{#!if f=="*"
r288
5277곱셈연산에서 ri가 비어있지 않을 경우 ri와 rb를 문자열로 바꾼 다음 각각 왼쪽을 0으로 채웁니다.
5278{{{#!if ps
5279{{{#!if ri=ri.toString(), ri=pd+ri, ri=ri.substr(ri.length-18, 18), rb=rb.toString(), rb=pd+rb, rb=rb.substr(rb.length-18, 18)
5280}}}}}}
r289
5281곱셈연산에서 ri가 비어있으나 rb가 비어있지 않을 경우 rb를 문자열로 바꾼 다음 rb의 왼쪽을 0으로 채웁니다.
5282{{{#!if !ps&&(+rb>0)
r228
5283{{{#!if rb=rb.toString(), rb=pd+rb, rb=rb.substr(rb.length-18, 18)
r179
5284}}}}}}
r287
5285}}}
r179
5286
r285
5287!ts인 상황에서 ps가 true이면 rp를 ri의 길이로, 그렇지 않고 rb만 0이 아닌경우 rp를 rb의 길이로 정의합니다.
5288{{{#!if !ts
r187
5289{{{#!if ps
r189
5290{{{#!if this.rp=ri.length
r277
5291}}}
r290
5292ps가 true일 때 19~36번째 자리인 ri까지 계산하므로 rp에 18을 더해야 하지만, 문자열 정리를 하기 위해 문자열의 index 번호를 다루고자 18을 더하는 작업은 뒤로 뻅니다.
5293}}}
r277
5294
5295{{{#!if !ps&&(rb!="")
r189
5296{{{#!if this.rp=rb.length
r160
5297}}}}}}
5298
r285
5299!ts이면서 ri가 빈 문자열이 아닐 경우 ri의 오른쪽부터 붙은 "0"들을 모두 지웁니다.
r167
5300{{{#!if ps
r223
5301{{{#!if (rp>9)&&(ri.substr(rp-9,9)=="000000000")
r290
5302{{{#!if this.ri=ri.substr(0,rp-9), rp-=9
r167
5303}}}}}}
r223
5304{{{#!if (rp>4)&&(ri.substr(rp-4,4)=="0000")
r290
5305{{{#!if this.ri=ri.substr(0,rp-4), rp-=4
r167
5306}}}}}}
r223
5307{{{#!if (rp>2)&&(ri.substr(rp-2,2)=="00")
r290
5308{{{#!if this.ri=ri.substr(0,rp-2), rp-=2
r167
5309}}}}}}
r223
5310{{{#!if (rp>2)&&(ri.substr(rp-2,2)=="00")
r290
5311{{{#!if this.ri=ri.substr(0,rp-2), rp-=2
r167
5312}}}}}}
r223
5313{{{#!if (rp>1)&&(ri.substr(rp-1,1)=="0")
r290
5314{{{#!if this.ri=ri.substr(0,rp-1), rp-=1
5315}}}}}}
5316문자열 정리를 끝냈을 때 rp에 18을 더합니다.
5317{{{#!if rp+=18
5318}}}}}}
r62
5319
r285
5320!ts이면서 이면서 ri가 빈 문자열일 경우, rb의 오른쪽에 붙은 "0"들을 모두 지웁니다,
r168
5321{{{#!if !ps
r223
5322{{{#!if (rp>9)&&(rb.substr(rp-9,9)=="000000000")
r290
5323{{{#!if this.rb=rb.substr(0,rp-9), rp-=9
r164
5324}}}}}}
r223
5325{{{#!if (rp>4)&&(rb.substr(rp-4,4)=="0000")
r290
5326{{{#!if this.rb=rb.substr(0,rp-4), rp-=4
r164
5327}}}}}}
r223
5328{{{#!if (rp>2)&&(rb.substr(rp-2,2)=="00")
r290
5329{{{#!if this.rb=rb.substr(0,rp-2), rp-=2
r164
5330}}}}}}
r223
5331{{{#!if (rp>2)&&(rb.substr(rp-2,2)=="00")
r290
5332{{{#!if this.rb=rb.substr(0,rp-2), rp-=2
r164
5333}}}}}}
r223
5334{{{#!if (rp>1)&&(rb.substr(rp-1,1)=="0")
r290
5335{{{#!if this.rb=rb.substr(0,rp-1), rp-=1
r167
5336}}}}}}}}}
r285
5337}}}
r188
5338
r285
5339ts인 경우 rb, ri의 오른쪽 부분을 정리하지 않고 rp를 39로 정의합니다.
5340{{{#!if ts
5341{{{#!if rp=39
5342}}}}}}
5343
5344
5345
r164
5346rb 정리를 이것으로 종료합니다.
5347
r216
5348##== 오류 코드 ==
5349error
53501 : 오버플로
53515 : 이중 소수점 표기
53526 : 소수점 윗부분 오류
53537 : 소수점 아랫부분 오류
5354
5355warning
53561 : 소수점 아래 입력한 자릿수가 너무 많음.
5357
5358##== 아래 출력 변수 설명 ==
r84
5359'''sa''' : searching a; '''sb''' : searching b; '''sf''' : searching f;
r280
5360'''rl''' : result string length to output; '''p''' : a point of string(s); '''ps''' : pass
r85
5361ru는 계산결과에서 소수점 위 자리이므로, dot(.)이 나오지 않습니다.
r62
5362##여기까지 주석(주석 아님)
r276
5363}}}{{{#!wiki style="font-weight: 300; font-size: 17.5px;"
r83
5364{{{#!if this.sa=(this.a!="")&&(this.a!=null), this.sb=(this.b!="")&&(this.b!=null), this.sf=(this.f=='+')||(this.f=='-')||(this.f=='*')||(this.f=='/')
5365}}}{{{#!if !sa&&!sb&&!sf
r295
5366변수를 입력하세요... }}}{{{#!if !(sa&&sb&&sf)
r95
5367({{{#!if !sa
r83
5368a{{{#!if !sb||!sf
5369, }}}}}}{{{#!if !sb
5370b{{{#!if !sf
5371, }}}}}}{{{#!if !sf
r95
5372f}}}를 입력하세요...)}}}{{{#!if sa&&sb&&sf
r112
5373{{{#!if (ea==0)&&(eb==0)
r77
5374{{{#!if as[0]!=45
r48
5375@a@}}}{{{#!if as[0]==45
r110
5376(@a@)}}} {{{#!if as.length>=20
r108
5377[br]}}}{{{#!if f=='+'
r62
5378+}}}{{{#!if f=="-"
5379-}}}{{{#!if f=="*"
5380*}}}{{{#!if f=="/"
r108
5381/}}} {{{#!if bs[0]!=45
r48
5382@b@}}}{{{#!if bs[0]==45
r110
5383(@b@)}}} {{{#!if (bs.length>=20)||(as.length+bs.length>=30)
r119
5384[br]}}}= {{{#!if rs!=""
r168
5385}}}{{{#!if (f=="*")||(f=="/")
5386@ns@{{{#!if rs!=""
r174
5387@rs@}}}}}}@ru@{{{#!if +rp>0
r98
5388##rb string, decimal point marking
r132
5389.@rb@{{{#!if ri!=""
r294
5390@ri@{{{#!if (f=='/')&&(tn=="...")
r271
5391...}}}}}}}}}}}}}}}{{{#!if (ea>0)||(eb>0)
r112
5392{{{#!if (ea==1)||(eb==1)
r192
5393'''{{{#orangered [오류]}}}''' 변수 {{{#!if ea==1
r112
5394a{{{#!if eb==1
5395와 }}}}}}{{{#!if eb==1
r298
5396b}}}에 범위를 초과하는 값이 입력되었습니다. {{{#gray (오버플로)}}}{{{#!if ea!=eb
5397[br]}}}}}}{{{#!if eb==3
5398'''{{{#orangered [오류]}}}''' 0으로 나눌 수 없습니다. {{{#gray (입력 오류)}}}{{{#!if ea!=eb
5399[br]}}}}}}{{{#!if (ea==5)||(eb==5)
r216
5400'''{{{#orangered [오류]}}}''' 변수 {{{#!if ea==5
5401a{{{#!if eb==5
5402와 }}}}}}{{{#!if eb==5
r298
5403b}}}에 소수점이 2개 이상 입력되었습니다. {{{#gray (입력 오류)}}}}}}{{{#!if (ea==6)||(eb==6)
r216
5404'''{{{#orangered [오류]}}}''' 변수 {{{#!if ea==6
5405a의 소수점 윗자리{{{#!if eb==6
5406와 }}}}}}{{{#!if eb==6
r280
5407b의 소수점 윗자리}}}에 올바르지 않은 문구{{{#!if ps=(((ea==6)&&(eb==7))||((ea==7)&&(eb==6))), ps
r279
5408가, }}}{{{#!if !ps
r298
5409가 입력되었습니다. {{{#gray (입력 오류)}}}{{{#!if ea!=eb
5410[br]}}}}}}}}}{{{#!if (ea==7)||(eb==7)
r279
5411{{{#!if !ps
5412'''{{{#orangered [오류]}}}'''}}} 변수 {{{#!if ea==7
r216
5413a의 소수점 아랫자리{{{#!if eb==7
5414와 }}}}}}{{{#!if eb==7
r299
5415b의 소수점 아랫자리}}}에 올바르지 않은 문구가 입력되었습니다. {{{#gray (입력 오류)}}}}}}}}}{{{#!if ((wa>0)||(wb>0))&&(((ea==0)&&(eb==0))||((wb==1)&&(eb==3)))
r300
5416{{{#!if (eb!=3)||((ea>3)&&(eb==3))
r298
5417[br]}}}{{{#!wiki style="display: inline; text-shadow: 1px 1px 2px gray;"
r301
5418'''{{{#yellow [경고] }}}'''}}}변수 {{{#!if (wa==1)&&(ea==0)
5419a{{{#!if (wb==1)&&(ea==0)
r269
5420와 }}}}}}{{{#!if wb==1
5421b}}}의 소수점 아래에 입력한 문구가 너무 많습니다. 소수점 아래 19번째 자리부터 입력된 문구는 무시됩니다.
5422}}}}}}