summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2023-11-18 20:51:16 +0700
committerShulhan <ms@kilabit.info>2023-11-19 20:55:38 +0700
commite2f814496450a6e75b5dde9165253a93abf02b38 (patch)
treef34d6a0609962e6cdebd4034a601919de141a776
parent1c87b8e610a7d5a9d034a99e0d2c9d1417cb8f80 (diff)
downloadawwan-e2f814496450a6e75b5dde9165253a93abf02b38.tar.xz
all: return 403 Forbidden when requesting awwan.key and awwan.pass
When user run "awwan serve", using web-user interface, any request to fetch the content of "awwan.key" and "awwan.pass" should not allowed for security reason, in case user want to serve awwan with others.
-rw-r--r--http_server.go28
-rw-r--r--http_server_test.go72
-rw-r--r--internal/memfs_wui.go2
l---------testdata/http_server/fsget/.ssh1
-rw-r--r--testdata/http_server/fsget/myhost/plain.txt1
-rw-r--r--testdata/http_server/fsget_test.data19
6 files changed, 118 insertions, 5 deletions
diff --git a/http_server.go b/http_server.go
index 0996432..a96f28d 100644
--- a/http_server.go
+++ b/http_server.go
@@ -99,7 +99,7 @@ func (httpd *httpServer) registerEndpoints() (err error) {
Path: pathAwwanApiFs,
RequestType: libhttp.RequestTypeQuery,
ResponseType: libhttp.ResponseTypeJSON,
- Call: httpd.awwanApiFsGet,
+ Call: httpd.FSGet,
})
if err != nil {
return fmt.Errorf("%s: %w", logp, err)
@@ -343,9 +343,19 @@ func (httpd *httpServer) Encrypt(epr *libhttp.EndpointRequest) (resb []byte, err
return resb, nil
}
-// awwanApiFsGet get the list of files or specific file using query
-// parameter "path".
-func (httpd *httpServer) awwanApiFsGet(epr *libhttp.EndpointRequest) (resb []byte, err error) {
+// FSGet get the list of files in directory or content of file by
+// its path.
+//
+// Request format,
+//
+// GET /awwan/api/fs?path=<string>
+//
+// Response format,
+//
+// Content-Type: application/json
+//
+// {"code":200,"data":<memfs.Node>}
+func (httpd *httpServer) FSGet(epr *libhttp.EndpointRequest) (resb []byte, err error) {
var (
res = &libhttp.EndpointResponse{}
@@ -359,9 +369,19 @@ func (httpd *httpServer) awwanApiFsGet(epr *libhttp.EndpointRequest) (resb []byt
res.Data = httpd.memfsBase
return json.Marshal(res)
}
+ if path == `/.ssh/awwan.key` || path == `/.ssh/awwan.pass` {
+ res.Code = http.StatusForbidden
+ res.Message = `Forbidden`
+ return nil, res
+ }
node, err = httpd.memfsBase.Get(path)
if err != nil {
+ if errors.Is(err, fs.ErrNotExist) {
+ res.Code = http.StatusNotFound
+ res.Message = fmt.Sprintf(`%q not found`, path)
+ return nil, res
+ }
return nil, err
}
diff --git a/http_server_test.go b/http_server_test.go
index 159c166..81a8b61 100644
--- a/http_server_test.go
+++ b/http_server_test.go
@@ -190,3 +190,75 @@ func TestHttpServer_Encrypt(t *testing.T) {
test.Assert(t, c.desc, c.expResp, gotResp.String())
}
}
+
+func TestHttpServer_FSGet(t *testing.T) {
+ var (
+ tdata *test.Data
+ err error
+ )
+
+ tdata, err = test.LoadData(`testdata/http_server/fsget_test.data`)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ var aww *Awwan
+
+ aww, err = New(`testdata/http_server/fsget`)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ var httpd *httpServer
+
+ httpd, err = newHttpServer(aww, ``)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ type testCase struct {
+ desc string
+ path string
+ exp string
+ }
+ var cases = []testCase{{
+ desc: `getSshAwwanKey`,
+ path: `/.ssh/awwan.key`,
+ exp: string(tdata.Output[`getSshAwwanKey`]),
+ }, {
+ desc: `getSshAwwanPass`,
+ path: `/.ssh/awwan.pass`,
+ exp: string(tdata.Output[`getSshAwwanPass`]),
+ }, {
+ desc: `getSshAwwanKeyIndirectly`,
+ path: `/myhost/../.ssh/awwan.key`,
+ exp: string(tdata.Output[`getSshAwwanKeyIndirectly`]),
+ }}
+
+ var (
+ c testCase
+ httpReq *http.Request
+ httpRes *http.Response
+ httpWriter *httptest.ResponseRecorder
+ body []byte
+ jsonBody bytes.Buffer
+ )
+
+ for _, c = range cases {
+ t.Log(c.desc)
+
+ httpReq = httptest.NewRequest(http.MethodGet, pathAwwanApiFs+`?path=`+c.path, nil)
+
+ httpWriter = httptest.NewRecorder()
+
+ httpd.ServeHTTP(httpWriter, httpReq)
+
+ httpRes = httpWriter.Result()
+
+ body, _ = io.ReadAll(httpRes.Body)
+
+ jsonBody.Reset()
+ json.Indent(&jsonBody, body, ``, ` `)
+ test.Assert(t, c.desc, c.exp, jsonBody.String())
+ }
+}
diff --git a/internal/memfs_wui.go b/internal/memfs_wui.go
index f2aec88..4359a7b 100644
--- a/internal/memfs_wui.go
+++ b/internal/memfs_wui.go
@@ -223,7 +223,7 @@ func generate__wui_main_js() *memfs.Node {
Content: []byte("\x22\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74\x22\x3B\x0A\x76\x61\x72\x20\x61\x77\x77\x61\x6E\x20\x3D\x20\x28\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x2F\x2F\x20\x5F\x77\x75\x69\x2F\x77\x75\x69\x2F\x65\x64\x69\x74\x6F\x72\x2F\x65\x64\x69\x74\x6F\x72\x2E\x6A\x73\x0A\x20\x20\x76\x61\x72\x20\x57\x55\x49\x5F\x45\x44\x49\x54\x4F\x52\x5F\x43\x4C\x41\x53\x53\x20\x3D\x20\x22\x77\x75\x69\x5F\x65\x64\x69\x74\x6F\x72\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x57\x55\x49\x5F\x45\x44\x49\x54\x4F\x52\x5F\x43\x4C\x41\x53\x53\x5F\x4C\x49\x4E\x45\x5F\x4E\x55\x4D\x42\x45\x52\x20\x3D\x20\x22\x77\x75\x69\x5F\x65\x64\x69\x74\x6F\x72\x5F\x6C\x69\x6E\x65\x5F\x6E\x75\x6D\x62\x65\x72\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x57\x55\x49\x5F\x45\x44\x49\x54\x4F\x52\x5F\x43\x4C\x41\x53\x53\x5F\x43\x4F\x4E\x54\x45\x4E\x54\x20\x3D\x20\x22\x77\x75\x69\x5F\x65\x64\x69\x74\x6F\x72\x5F\x63\x6F\x6E\x74\x65\x6E\x74\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x57\x75\x69\x45\x64\x69\x74\x6F\x72\x20\x3D\x20\x63\x6C\x61\x73\x73\x20\x7B\x0A\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x72\x75\x63\x74\x6F\x72\x28\x6F\x70\x74\x73\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x70\x74\x73\x20\x3D\x20\x6F\x70\x74\x73\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6E\x74\x65\x6E\x74\x20\x3D\x20\x22\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x74\x6F\x74\x61\x6C\x4C\x69\x6E\x65\x20\x3D\x20\x30\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x4C\x69\x6E\x65\x4E\x75\x6D\x62\x65\x72\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x28\x22\x64\x69\x76\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x43\x6F\x6E\x74\x65\x6E\x74\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x28\x22\x64\x69\x76\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x69\x73\x4B\x65\x79\x43\x6F\x6E\x74\x72\x6F\x6C\x20\x3D\x20\x66\x61\x6C\x73\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x69\x64\x20\x3D\x20\x6F\x70\x74\x73\x2E\x69\x64\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x69\x73\x45\x64\x69\x74\x61\x62\x6C\x65\x20\x3D\x20\x6F\x70\x74\x73\x2E\x69\x73\x45\x64\x69\x74\x61\x62\x6C\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x6F\x70\x74\x73\x2E\x69\x64\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x21\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x65\x72\x72\x6F\x72\x28\x22\x57\x75\x69\x45\x64\x69\x74\x6F\x72\x3A\x20\x65\x6C\x65\x6D\x65\x6E\x74\x20\x49\x44\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x3A\x22\x2C\x20\x6F\x70\x74\x73\x2E\x69\x64\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x20\x3D\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x69\x6E\x69\x74\x53\x74\x79\x6C\x65\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x69\x6E\x69\x74\x4C\x69\x6E\x65\x4E\x75\x6D\x62\x65\x72\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x69\x6E\x69\x74\x43\x6F\x6E\x74\x65\x6E\x74\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x63\x6C\x61\x73\x73\x4C\x69\x73\x74\x2E\x61\x64\x64\x28\x57\x55\x49\x5F\x45\x44\x49\x54\x4F\x52\x5F\x43\x4C\x41\x53\x53\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x2F\x2F\x20\x67\x65\x74\x43\x6F\x6E\x74\x65\x6E\x74\x20\x72\x65\x74\x75\x72\x6E\x20\x63\x6F\x6E\x74\x65\x6E\x74\x20\x6F\x66\x20\x66\x69\x6C\x65\x2E\x0A\x20\x20\x20\x20\x67\x65\x74\x43\x6F\x6E\x74\x65\x6E\x74\x28\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x6C\x65\x74\x20\x63\x6F\x6E\x74\x65\x6E\x74\x20\x3D\x20\x22\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x6C\x65\x74\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x6C\x65\x74\x20\x6C\x69\x6E\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x43\x6F\x6E\x74\x65\x6E\x74\x2E\x63\x68\x69\x6C\x64\x4E\x6F\x64\x65\x73\x2E\x66\x6F\x72\x45\x61\x63\x68\x28\x28\x6E\x6F\x64\x65\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x73\x77\x69\x74\x63\x68\x20\x28\x6E\x6F\x64\x65\x2E\x6E\x6F\x64\x65\x54\x79\x70\x65\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x4E\x6F\x64\x65\x2E\x45\x4C\x45\x4D\x45\x4E\x54\x5F\x4E\x4F\x44\x45\x3A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x20\x3D\x20\x6E\x6F\x64\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6C\x69\x6E\x65\x20\x3D\x20\x65\x6C\x2E\x69\x6E\x6E\x65\x72\x54\x65\x78\x74\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x72\x65\x61\x6B\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x4E\x6F\x64\x65\x2E\x54\x45\x58\x54\x5F\x4E\x4F\x44\x45\x3A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6C\x69\x6E\x65\x20\x3D\x20\x6E\x6F\x64\x65\x2E\x6E\x6F\x64\x65\x56\x61\x6C\x75\x65\x20\x7C\x7C\x20\x22\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x72\x65\x61\x6B\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6C\x69\x6E\x65\x20\x3D\x3D\x20\x22\x5C\x6E\x22\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x74\x65\x6E\x74\x20\x2B\x3D\x20\x6C\x69\x6E\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x20\x65\x6C\x73\x65\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x74\x65\x6E\x74\x20\x2B\x3D\x20\x6C\x69\x6E\x65\x20\x2B\x20\x22\x5C\x6E\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x7D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x74\x65\x6E\x74\x20\x3D\x20\x63\x6F\x6E\x74\x65\x6E\x74\x2E\x74\x72\x69\x6D\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x2F\x2F\x20\x6F\x70\x65\x6E\x20\x74\x68\x65\x20\x6E\x6F\x64\x65\x20\x66\x6F\x72\x20\x65\x64\x69\x74\x69\x6E\x67\x2E\x0A\x20\x20\x20\x20\x2F\x2F\x20\x54\x68\x65\x20\x63\x6F\x6E\x74\x65\x6E\x74\x20\x4D\x55\x53\x54\x20\x62\x65\x20\x65\x6E\x63\x6F\x64\x65\x64\x20\x69\x6E\x20\x62\x61\x73\x65\x36\x34\x2E\x0A\x20\x20\x20\x20\x6F\x70\x65\x6E\x28\x6E\x6F\x64\x65\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6E\x74\x65\x6E\x74\x20\x3D\x20\x61\x74\x6F\x62\x28\x6E\x6F\x64\x65\x2E\x63\x6F\x6E\x74\x65\x6E\x74\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6E\x74\x65\x6E\x74\x20\x3D\x20\x74\x68\x69\x73\x2E\x63\x6F\x6E\x74\x65\x6E\x74\x2E\x72\x65\x70\x6C\x61\x63\x65\x28\x22\x5C\x72\x5C\x6E\x22\x2C\x20\x22\x5C\x6E\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x72\x65\x6E\x64\x65\x72\x28\x74\x68\x69\x73\x2E\x63\x6F\x6E\x74\x65\x6E\x74\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x73\x65\x74\x45\x64\x69\x74\x61\x62\x6C\x65\x28\x79\x65\x73\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x69\x73\x45\x64\x69\x74\x61\x62\x6C\x65\x20\x3D\x20\x79\x65\x73\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x79\x65\x73\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x43\x6F\x6E\x74\x65\x6E\x74\x2E\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65\x28\x22\x63\x6F\x6E\x74\x65\x6E\x74\x65\x64\x69\x74\x61\x62\x6C\x65\x22\x2C\x20\x22\x74\x72\x75\x65\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x20\x65\x6C\x73\x65\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x43\x6F\x6E\x74\x65\x6E\x74\x2E\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65\x28\x22\x63\x6F\x6E\x74\x65\x6E\x74\x65\x64\x69\x74\x61\x62\x6C\x65\x22\x2C\x20\x22\x66\x61\x6C\x73\x65\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x61\x64\x64\x4E\x65\x77\x4C\x69\x6E\x65\x28\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x74\x6F\x74\x61\x6C\x4C\x69\x6E\x65\x2B\x2B\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x65\x6C\x4C\x69\x6E\x65\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x28\x22\x64\x69\x76\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x4C\x69\x6E\x65\x2E\x69\x6E\x6E\x65\x72\x54\x65\x78\x74\x20\x3D\x20\x60\x24\x7B\x74\x68\x69\x73\x2E\x74\x6F\x74\x61\x6C\x4C\x69\x6E\x65\x7D\x60\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x4C\x69\x6E\x65\x4E\x75\x6D\x62\x65\x72\x2E\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x28\x65\x6C\x4C\x69\x6E\x65\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x69\x6E\x69\x74\x4C\x69\x6E\x65\x4E\x75\x6D\x62\x65\x72\x28\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x4C\x69\x6E\x65\x4E\x75\x6D\x62\x65\x72\x2E\x63\x6C\x61\x73\x73\x4C\x69\x73\x74\x2E\x61\x64\x64\x28\x57\x55\x49\x5F\x45\x44\x49\x54\x4F\x52\x5F\x43\x4C\x41\x53\x53\x5F\x4C\x49\x4E\x45\x5F\x4E\x55\x4D\x42\x45\x52\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x28\x74\x68\x69\x73\x2E\x65\x6C\x4C\x69\x6E\x65\x4E\x75\x6D\x62\x65\x72\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x69\x6E\x69\x74\x43\x6F\x6E\x74\x65\x6E\x74\x28\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\x68\x69\x73\x2E\x6F\x70\x74\x73\x2E\x69\x73\x45\x64\x69\x74\x61\x62\x6C\x65\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x43\x6F\x6E\x74\x65\x6E\x74\x2E\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65\x28\x22\x63\x6F\x6E\x74\x65\x6E\x74\x65\x64\x69\x74\x61\x62\x6C\x65\x22\x2C\x20\x22\x74\x72\x75\x65\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x43\x6F\x6E\x74\x65\x6E\x74\x2E\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65\x28\x22\x73\x70\x65\x6C\x6C\x63\x68\x65\x63\x6B\x22\x2C\x20\x22\x66\x61\x6C\x73\x65\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x43\x6F\x6E\x74\x65\x6E\x74\x2E\x61\x64\x64\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72\x28\x22\x70\x61\x73\x74\x65\x22\x2C\x20\x28\x65\x76\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\x5F\x61\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x76\x2E\x70\x72\x65\x76\x65\x6E\x74\x44\x65\x66\x61\x75\x6C\x74\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x74\x65\x78\x74\x20\x3D\x20\x28\x5F\x61\x20\x3D\x20\x65\x76\x2E\x63\x6C\x69\x70\x62\x6F\x61\x72\x64\x44\x61\x74\x61\x29\x20\x3D\x3D\x3D\x20\x6E\x75\x6C\x6C\x20\x7C\x7C\x20\x5F\x61\x20\x3D\x3D\x3D\x20\x76\x6F\x69\x64\x20\x30\x20\x3F\x20\x76\x6F\x69\x64\x20\x30\x20\x3A\x20\x5F\x61\x2E\x67\x65\x74\x44\x61\x74\x61\x28\x22\x74\x65\x78\x74\x2F\x70\x6C\x61\x69\x6E\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x65\x78\x65\x63\x43\x6F\x6D\x6D\x61\x6E\x64\x28\x22\x69\x6E\x73\x65\x72\x74\x54\x65\x78\x74\x22\x2C\x20\x66\x61\x6C\x73\x65\x2C\x20\x74\x65\x78\x74\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x72\x65\x6E\x64\x65\x72\x4C\x69\x6E\x65\x4E\x75\x6D\x62\x65\x72\x28\x74\x68\x69\x73\x2E\x67\x65\x74\x43\x6F\x6E\x74\x65\x6E\x74\x28\x29\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x43\x6F\x6E\x74\x65\x6E\x74\x2E\x6F\x6E\x6B\x65\x79\x64\x6F\x77\x6E\x20\x3D\x20\x28\x65\x76\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x4B\x65\x79\x64\x6F\x77\x6E\x44\x6F\x63\x75\x6D\x65\x6E\x74\x28\x74\x68\x69\x73\x2C\x20\x65\x76\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x43\x6F\x6E\x74\x65\x6E\x74\x2E\x6F\x6E\x6B\x65\x79\x75\x70\x20\x3D\x20\x28\x65\x76\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x4B\x65\x79\x75\x70\x44\x6F\x63\x75\x6D\x65\x6E\x74\x28\x74\x68\x69\x73\x2C\x20\x65\x76\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x43\x6F\x6E\x74\x65\x6E\x74\x2E\x63\x6C\x61\x73\x73\x4C\x69\x73\x74\x2E\x61\x64\x64\x28\x57\x55\x49\x5F\x45\x44\x49\x54\x4F\x52\x5F\x43\x4C\x41\x53\x53\x5F\x43\x4F\x4E\x54\x45\x4E\x54\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x28\x74\x68\x69\x73\x2E\x65\x6C\x43\x6F\x6E\x74\x65\x6E\x74\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x69\x6E\x69\x74\x53\x74\x79\x6C\x65\x28\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x73\x74\x79\x6C\x65\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x28\x22\x73\x74\x79\x6C\x65\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6C\x65\x2E\x74\x79\x70\x65\x20\x3D\x20\x22\x74\x65\x78\x74\x2F\x63\x73\x73\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6C\x65\x2E\x69\x6E\x6E\x65\x72\x54\x65\x78\x74\x20\x3D\x20\x60\x0A\x20\x20\x20\x20\x20\x20\x5B\x63\x6F\x6E\x74\x65\x6E\x74\x65\x64\x69\x74\x61\x62\x6C\x65\x5D\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6F\x75\x74\x6C\x69\x6E\x65\x3A\x20\x30\x70\x78\x20\x73\x6F\x6C\x69\x64\x20\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x2E\x24\x7B\x57\x55\x49\x5F\x45\x44\x49\x54\x4F\x52\x5F\x43\x4C\x41\x53\x53\x7D\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x63\x6F\x6C\x6F\x72\x3A\x20\x63\x6F\x72\x6E\x73\x69\x6C\x6B\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x62\x6F\x72\x64\x65\x72\x3A\x20\x31\x70\x78\x20\x73\x6F\x6C\x69\x64\x20\x62\x72\x6F\x77\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6F\x6E\x74\x2D\x66\x61\x6D\x69\x6C\x79\x3A\x20\x6D\x6F\x6E\x6F\x73\x70\x61\x63\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6C\x69\x6E\x65\x2D\x68\x65\x69\x67\x68\x74\x3A\x20\x31\x2E\x36\x65\x6D\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6F\x76\x65\x72\x66\x6C\x6F\x77\x2D\x79\x3A\x20\x73\x63\x72\x6F\x6C\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3A\x20\x31\x30\x30\x25\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x2E\x24\x7B\x57\x55\x49\x5F\x45\x44\x49\x54\x4F\x52\x5F\x43\x4C\x41\x53\x53\x5F\x4C\x49\x4E\x45\x5F\x4E\x55\x4D\x42\x45\x52\x7D\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x63\x6F\x6C\x6F\x72\x3A\x20\x62\x69\x73\x71\x75\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x62\x6F\x72\x64\x65\x72\x2D\x72\x69\x67\x68\x74\x3A\x20\x31\x70\x78\x20\x64\x61\x73\x68\x65\x64\x20\x62\x72\x6F\x77\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6C\x6F\x72\x3A\x20\x64\x69\x6D\x67\x72\x65\x79\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6F\x6E\x74\x2D\x66\x61\x6D\x69\x6C\x79\x3A\x20\x6D\x6F\x6E\x6F\x73\x70\x61\x63\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6C\x6F\x61\x74\x3A\x20\x6C\x65\x66\x74\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6C\x65\x66\x74\x3A\x20\x30\x70\x78\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6D\x61\x72\x67\x69\x6E\x2D\x72\x69\x67\x68\x74\x3A\x20\x38\x70\x78\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6E\x67\x3A\x20\x30\x70\x78\x20\x38\x70\x78\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A\x20\x73\x74\x69\x63\x6B\x79\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x65\x78\x74\x2D\x61\x6C\x69\x67\x6E\x3A\x20\x72\x69\x67\x68\x74\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3A\x20\x33\x65\x6D\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x2E\x24\x7B\x57\x55\x49\x5F\x45\x44\x49\x54\x4F\x52\x5F\x43\x4C\x41\x53\x53\x5F\x43\x4F\x4E\x54\x45\x4E\x54\x7D\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x2F\x2F\x20\x44\x6F\x20\x6E\x6F\x74\x20\x75\x73\x65\x20\x22\x66\x6C\x6F\x61\x74\x3A\x20\x6C\x65\x66\x74\x22\x20\x74\x6F\x20\x66\x69\x78\x20\x6C\x69\x6E\x65\x20\x62\x72\x65\x61\x6B\x2E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x64\x69\x73\x70\x6C\x61\x79\x3A\x20\x69\x6E\x6C\x69\x6E\x65\x2D\x62\x6C\x6F\x63\x6B\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6E\x67\x3A\x20\x30\x70\x78\x20\x38\x70\x78\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x77\x68\x69\x74\x65\x2D\x73\x70\x61\x63\x65\x3A\x20\x70\x72\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3A\x20\x63\x61\x6C\x63\x28\x31\x30\x30\x25\x20\x2D\x20\x36\x65\x6D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x77\x6F\x72\x64\x2D\x77\x72\x61\x70\x3A\x20\x6E\x6F\x72\x6D\x61\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x60\x3B\x0A\x20\x20\x20\x20\x20\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x68\x65\x61\x64\x2E\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x28\x73\x74\x79\x6C\x65\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x6F\x6E\x4B\x65\x79\x64\x6F\x77\x6E\x44\x6F\x63\x75\x6D\x65\x6E\x74\x28\x65\x64\x2C\x20\x65\x76\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x73\x77\x69\x74\x63\x68\x20\x28\x65\x76\x2E\x6B\x65\x79\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x22\x43\x6F\x6E\x74\x72\x6F\x6C\x22\x3A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x64\x2E\x69\x73\x4B\x65\x79\x43\x6F\x6E\x74\x72\x6F\x6C\x20\x3D\x20\x74\x72\x75\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x72\x65\x61\x6B\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x22\x45\x6E\x74\x65\x72\x22\x3A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x64\x2E\x69\x73\x4B\x65\x79\x43\x6F\x6E\x74\x72\x6F\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x76\x2E\x70\x72\x65\x76\x65\x6E\x74\x44\x65\x66\x61\x75\x6C\x74\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x76\x2E\x73\x74\x6F\x70\x50\x72\x6F\x70\x61\x67\x61\x74\x69\x6F\x6E\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x64\x2E\x6F\x70\x74\x73\x2E\x6F\x6E\x53\x61\x76\x65\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x63\x6F\x6E\x74\x65\x6E\x74\x20\x3D\x20\x65\x64\x2E\x67\x65\x74\x43\x6F\x6E\x74\x65\x6E\x74\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x64\x2E\x6F\x70\x74\x73\x2E\x6F\x6E\x53\x61\x76\x65\x28\x63\x6F\x6E\x74\x65\x6E\x74\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x64\x2E\x72\x65\x6E\x64\x65\x72\x28\x63\x6F\x6E\x74\x65\x6E\x74\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x66\x61\x6C\x73\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x61\x64\x64\x4E\x65\x77\x4C\x69\x6E\x65\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x66\x61\x6C\x73\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x74\x72\x75\x65\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x6F\x6E\x4B\x65\x79\x75\x70\x44\x6F\x63\x75\x6D\x65\x6E\x74\x28\x65\x64\x2C\x20\x65\x76\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x73\x77\x69\x74\x63\x68\x20\x28\x65\x76\x2E\x6B\x65\x79\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61\x73\x65\x20\x22\x43\x6F\x6E\x74\x72\x6F\x6C\x22\x3A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x64\x2E\x69\x73\x4B\x65\x79\x43\x6F\x6E\x74\x72\x6F\x6C\x20\x3D\x20\x66\x61\x6C\x73\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x74\x72\x75\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x74\x72\x75\x65\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x72\x65\x6E\x64\x65\x72\x28\x63\x6F\x6E\x74\x65\x6E\x74\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x6C\x69\x6E\x65\x73\x20\x3D\x20\x63\x6F\x6E\x74\x65\x6E\x74\x2E\x73\x70\x6C\x69\x74\x28\x22\x5C\x6E\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x43\x6F\x6E\x74\x65\x6E\x74\x2E\x69\x6E\x6E\x65\x72\x54\x65\x78\x74\x20\x3D\x20\x22\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x4C\x69\x6E\x65\x4E\x75\x6D\x62\x65\x72\x2E\x69\x6E\x6E\x65\x72\x54\x65\x78\x74\x20\x3D\x20\x22\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x6C\x69\x6E\x65\x73\x2E\x66\x6F\x72\x45\x61\x63\x68\x28\x28\x6C\x69\x6E\x65\x2C\x20\x78\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x28\x22\x64\x69\x76\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x2E\x69\x6E\x6E\x65\x72\x54\x65\x78\x74\x20\x3D\x20\x60\x24\x7B\x78\x20\x2B\x20\x31\x7D\x60\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x4C\x69\x6E\x65\x4E\x75\x6D\x62\x65\x72\x2E\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x28\x65\x6C\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x64\x69\x76\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x28\x22\x64\x69\x76\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x64\x69\x76\x2E\x69\x6E\x6E\x65\x72\x54\x65\x78\x74\x20\x3D\x20\x6C\x69\x6E\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6C\x69\x6E\x65\x20\x3D\x3D\x20\x22\x22\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x69\x76\x2E\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x28\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x28\x22\x62\x72\x22\x29\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x43\x6F\x6E\x74\x65\x6E\x74\x2E\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x28\x64\x69\x76\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x74\x6F\x74\x61\x6C\x4C\x69\x6E\x65\x20\x3D\x20\x6C\x69\x6E\x65\x73\x2E\x6C\x65\x6E\x67\x74\x68\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x72\x65\x6E\x64\x65\x72\x4C\x69\x6E\x65\x4E\x75\x6D\x62\x65\x72\x28\x63\x6F\x6E\x74\x65\x6E\x74\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x6C\x69\x6E\x65\x73\x20\x3D\x20\x63\x6F\x6E\x74\x65\x6E\x74\x2E\x73\x70\x6C\x69\x74\x28\x22\x5C\x6E\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x4C\x69\x6E\x65\x4E\x75\x6D\x62\x65\x72\x2E\x69\x6E\x6E\x65\x72\x54\x65\x78\x74\x20\x3D\x20\x22\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x6C\x69\x6E\x65\x73\x2E\x66\x6F\x72\x45\x61\x63\x68\x28\x28\x5F\x2C\x20\x78\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x28\x22\x64\x69\x76\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x2E\x69\x6E\x6E\x65\x72\x54\x65\x78\x74\x20\x3D\x20\x60\x24\x7B\x78\x20\x2B\x20\x31\x7D\x60\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x4C\x69\x6E\x65\x4E\x75\x6D\x62\x65\x72\x2E\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x28\x65\x6C\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x74\x6F\x74\x61\x6C\x4C\x69\x6E\x65\x20\x3D\x20\x6C\x69\x6E\x65\x73\x2E\x6C\x65\x6E\x67\x74\x68\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x7D\x3B\x0A\x0A\x20\x20\x2F\x2F\x20\x5F\x77\x75\x69\x2F\x77\x75\x69\x2F\x6E\x6F\x74\x69\x66\x2F\x6E\x6F\x74\x69\x66\x2E\x6A\x73\x0A\x20\x20\x76\x61\x72\x20\x57\x55\x49\x5F\x4E\x4F\x54\x49\x46\x5F\x49\x44\x20\x3D\x20\x22\x77\x75\x69\x5F\x6E\x6F\x74\x69\x66\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x57\x55\x49\x5F\x4E\x4F\x54\x49\x46\x5F\x43\x4C\x41\x53\x53\x5F\x49\x4E\x46\x4F\x20\x3D\x20\x22\x77\x75\x69\x5F\x6E\x6F\x74\x69\x66\x5F\x69\x6E\x66\x6F\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x57\x55\x49\x5F\x4E\x4F\x54\x49\x46\x5F\x43\x4C\x41\x53\x53\x5F\x45\x52\x52\x4F\x52\x20\x3D\x20\x22\x77\x75\x69\x5F\x6E\x6F\x74\x69\x66\x5F\x65\x72\x72\x6F\x72\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x57\x75\x69\x4E\x6F\x74\x69\x66\x20\x3D\x20\x63\x6C\x61\x73\x73\x20\x7B\x0A\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x72\x75\x63\x74\x6F\x72\x28\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x74\x69\x6D\x65\x6F\x75\x74\x20\x3D\x20\x35\x65\x33\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x28\x22\x64\x69\x76\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x69\x64\x20\x3D\x20\x57\x55\x49\x5F\x4E\x4F\x54\x49\x46\x5F\x49\x44\x3B\x0A\x20\x20\x20\x20\x20\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x62\x6F\x64\x79\x2E\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x28\x74\x68\x69\x73\x2E\x65\x6C\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x69\x6E\x69\x74\x53\x74\x79\x6C\x65\x28\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x2F\x2F\x20\x69\x6E\x66\x6F\x20\x73\x68\x6F\x77\x20\x74\x68\x65\x20\x6D\x73\x67\x20\x61\x73\x20\x69\x6E\x66\x6F\x72\x6D\x61\x74\x69\x6F\x6E\x2E\x0A\x20\x20\x20\x20\x69\x6E\x66\x6F\x28\x6D\x73\x67\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x69\x74\x65\x6D\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x28\x22\x64\x69\x76\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x74\x65\x6D\x2E\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C\x20\x3D\x20\x6D\x73\x67\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x74\x65\x6D\x2E\x63\x6C\x61\x73\x73\x4C\x69\x73\x74\x2E\x61\x64\x64\x28\x57\x55\x49\x5F\x4E\x4F\x54\x49\x46\x5F\x43\x4C\x41\x53\x53\x5F\x49\x4E\x46\x4F\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x28\x69\x74\x65\x6D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x73\x65\x74\x54\x69\x6D\x65\x6F\x75\x74\x28\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x72\x65\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64\x28\x69\x74\x65\x6D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x2C\x20\x74\x68\x69\x73\x2E\x74\x69\x6D\x65\x6F\x75\x74\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x2F\x2F\x20\x65\x72\x72\x6F\x72\x20\x73\x68\x6F\x77\x20\x74\x68\x65\x20\x6D\x73\x67\x20\x61\x73\x20\x61\x6E\x20\x65\x72\x72\x6F\x72\x2E\x0A\x20\x20\x20\x20\x65\x72\x72\x6F\x72\x28\x6D\x73\x67\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x69\x74\x65\x6D\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x28\x22\x64\x69\x76\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x74\x65\x6D\x2E\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C\x20\x3D\x20\x6D\x73\x67\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x74\x65\x6D\x2E\x63\x6C\x61\x73\x73\x4C\x69\x73\x74\x2E\x61\x64\x64\x28\x57\x55\x49\x5F\x4E\x4F\x54\x49\x46\x5F\x43\x4C\x41\x53\x53\x5F\x45\x52\x52\x4F\x52\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x28\x69\x74\x65\x6D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x73\x65\x74\x54\x69\x6D\x65\x6F\x75\x74\x28\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x72\x65\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64\x28\x69\x74\x65\x6D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x2C\x20\x74\x68\x69\x73\x2E\x74\x69\x6D\x65\x6F\x75\x74\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x69\x6E\x69\x74\x53\x74\x79\x6C\x65\x28\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x73\x74\x79\x6C\x65\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x28\x22\x73\x74\x79\x6C\x65\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6C\x65\x2E\x74\x79\x70\x65\x20\x3D\x20\x22\x74\x65\x78\x74\x2F\x63\x73\x73\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6C\x65\x2E\x69\x6E\x6E\x65\x72\x54\x65\x78\x74\x20\x3D\x20\x60\x0A\x09\x09\x09\x23\x24\x7B\x57\x55\x49\x5F\x4E\x4F\x54\x49\x46\x5F\x49\x44\x7D\x20\x7B\x0A\x09\x09\x09\x09\x6C\x65\x66\x74\x3A\x20\x31\x30\x25\x3B\x0A\x09\x09\x09\x09\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A\x20\x66\x69\x78\x65\x64\x3B\x0A\x09\x09\x09\x09\x74\x6F\x70\x3A\x20\x31\x65\x6D\x3B\x0A\x09\x09\x09\x09\x77\x69\x64\x74\x68\x3A\x20\x38\x30\x25\x3B\x0A\x09\x09\x09\x09\x7A\x2D\x69\x6E\x64\x65\x78\x3A\x20\x31\x30\x30\x30\x30\x3B\x0A\x09\x09\x09\x7D\x0A\x09\x09\x09\x2E\x24\x7B\x57\x55\x49\x5F\x4E\x4F\x54\x49\x46\x5F\x43\x4C\x41\x53\x53\x5F\x49\x4E\x46\x4F\x7D\x20\x7B\x0A\x09\x09\x09\x09\x62\x6F\x72\x64\x65\x72\x3A\x20\x31\x70\x78\x20\x73\x6F\x6C\x69\x64\x20\x73\x69\x6C\x76\x65\x72\x3B\x0A\x09\x09\x09\x09\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x63\x6F\x6C\x6F\x72\x3A\x20\x68\x6F\x6E\x65\x79\x64\x65\x77\x3B\x0A\x09\x09\x09\x09\x6D\x61\x72\x67\x69\x6E\x2D\x62\x6F\x74\x74\x6F\x6D\x3A\x20\x31\x65\x6D\x3B\x0A\x09\x09\x09\x09\x70\x61\x64\x64\x69\x6E\x67\x3A\x20\x31\x65\x6D\x3B\x0A\x09\x09\x09\x7D\x0A\x09\x09\x09\x2E\x24\x7B\x57\x55\x49\x5F\x4E\x4F\x54\x49\x46\x5F\x43\x4C\x41\x53\x53\x5F\x45\x52\x52\x4F\x52\x7D\x20\x7B\x0A\x09\x09\x09\x09\x62\x6F\x72\x64\x65\x72\x3A\x20\x31\x70\x78\x20\x73\x6F\x6C\x69\x64\x20\x73\x61\x6C\x6D\x6F\x6E\x3B\x0A\x09\x09\x09\x09\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x63\x6F\x6C\x6F\x72\x3A\x20\x6C\x69\x67\x68\x74\x73\x61\x6C\x6D\x6F\x6E\x3B\x0A\x09\x09\x09\x09\x6D\x61\x72\x67\x69\x6E\x2D\x62\x6F\x74\x74\x6F\x6D\x3A\x20\x31\x65\x6D\x3B\x0A\x09\x09\x09\x09\x70\x61\x64\x64\x69\x6E\x67\x3A\x20\x31\x65\x6D\x3B\x0A\x09\x09\x09\x7D\x0A\x09\x09\x60\x3B\x0A\x20\x20\x20\x20\x20\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x68\x65\x61\x64\x2E\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x28\x73\x74\x79\x6C\x65\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x7D\x3B\x0A\x0A\x20\x20\x2F\x2F\x20\x5F\x77\x75\x69\x2F\x77\x75\x69\x2F\x76\x66\x73\x2F\x76\x66\x73\x2E\x6A\x73\x0A\x20\x20\x76\x61\x72\x20\x43\x4C\x41\x53\x53\x5F\x56\x46\x53\x5F\x50\x41\x54\x48\x20\x3D\x20\x22\x77\x75\x69\x5F\x76\x66\x73\x5F\x70\x61\x74\x68\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x43\x4C\x41\x53\x53\x5F\x56\x46\x53\x5F\x4C\x49\x53\x54\x20\x3D\x20\x22\x77\x75\x69\x5F\x76\x66\x73\x5F\x6C\x69\x73\x74\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x57\x75\x69\x56\x66\x73\x20\x3D\x20\x63\x6C\x61\x73\x73\x20\x7B\x0A\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x72\x75\x63\x74\x6F\x72\x28\x6F\x70\x74\x73\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x70\x74\x73\x20\x3D\x20\x6F\x70\x74\x73\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x6F\x70\x74\x73\x2E\x69\x64\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x21\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x65\x72\x72\x6F\x72\x28\x22\x57\x75\x69\x56\x66\x73\x3A\x20\x65\x6C\x65\x6D\x65\x6E\x74\x20\x69\x64\x22\x2C\x20\x6F\x70\x74\x73\x2E\x69\x64\x2C\x20\x22\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x20\x3D\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x5F\x70\x61\x74\x68\x20\x3D\x20\x6E\x65\x77\x20\x57\x75\x69\x56\x66\x73\x50\x61\x74\x68\x28\x28\x70\x61\x74\x68\x32\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x70\x65\x6E\x44\x69\x72\x28\x70\x61\x74\x68\x32\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x28\x74\x68\x69\x73\x2E\x63\x6F\x6D\x5F\x70\x61\x74\x68\x2E\x65\x6C\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x5F\x6C\x69\x73\x74\x20\x3D\x20\x6E\x65\x77\x20\x57\x75\x69\x56\x66\x73\x4C\x69\x73\x74\x28\x28\x6E\x6F\x64\x65\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x70\x65\x6E\x4E\x6F\x64\x65\x28\x6E\x6F\x64\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x28\x74\x68\x69\x73\x2E\x63\x6F\x6D\x5F\x6C\x69\x73\x74\x2E\x65\x6C\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x2F\x2F\x20\x66\x69\x6C\x74\x65\x72\x20\x74\x68\x65\x20\x56\x46\x53\x20\x6C\x69\x73\x74\x20\x62\x61\x73\x65\x64\x20\x6F\x6E\x20\x74\x65\x78\x74\x20\x76\x61\x6C\x75\x65\x2E\x0A\x20\x20\x20\x20\x66\x69\x6C\x74\x65\x72\x28\x74\x65\x78\x74\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x5F\x6C\x69\x73\x74\x2E\x66\x69\x6C\x74\x65\x72\x28\x74\x65\x78\x74\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x2F\x2F\x20\x6F\x70\x65\x6E\x4E\x6F\x64\x65\x20\x69\x73\x20\x61\x20\x68\x61\x6E\x64\x6C\x65\x72\x20\x74\x68\x61\x74\x20\x77\x69\x6C\x6C\x20\x62\x65\x20\x63\x61\x6C\x6C\x65\x64\x20\x77\x68\x65\x6E\x20\x61\x20\x6E\x6F\x64\x65\x20\x69\x73\x20\x63\x6C\x69\x63\x6B\x65\x64\x0A\x20\x20\x20\x20\x2F\x2F\x20\x69\x6E\x73\x69\x64\x65\x20\x74\x68\x65\x20\x57\x75\x69\x56\x66\x73\x4C\x69\x73\x74\x2E\x0A\x20\x20\x20\x20\x6F\x70\x65\x6E\x4E\x6F\x64\x65\x28\x6E\x6F\x64\x65\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6E\x6F\x64\x65\x2E\x69\x73\x5F\x64\x69\x72\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x70\x65\x6E\x44\x69\x72\x28\x6E\x6F\x64\x65\x2E\x70\x61\x74\x68\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x20\x65\x6C\x73\x65\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x70\x74\x73\x2E\x6F\x70\x65\x6E\x4E\x6F\x64\x65\x28\x6E\x6F\x64\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x2F\x2F\x20\x6F\x70\x65\x6E\x44\x69\x72\x20\x69\x73\x20\x61\x20\x68\x61\x6E\x64\x6C\x65\x72\x20\x74\x68\x61\x74\x20\x77\x69\x6C\x6C\x20\x62\x65\x20\x63\x61\x6C\x6C\x65\x64\x20\x77\x68\x65\x6E\x20\x61\x20\x70\x61\x74\x68\x20\x69\x73\x20\x63\x6C\x69\x63\x6B\x65\x64\x0A\x20\x20\x20\x20\x2F\x2F\x20\x69\x6E\x73\x69\x64\x65\x20\x74\x68\x65\x20\x57\x75\x69\x56\x66\x73\x50\x61\x74\x68\x2E\x0A\x20\x20\x20\x20\x61\x73\x79\x6E\x63\x20\x6F\x70\x65\x6E\x44\x69\x72\x28\x70\x61\x74\x68\x32\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x72\x65\x73\x32\x20\x3D\x20\x61\x77\x61\x69\x74\x20\x74\x68\x69\x73\x2E\x6F\x70\x74\x73\x2E\x6F\x70\x65\x6E\x28\x70\x61\x74\x68\x32\x2C\x20\x74\x72\x75\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x72\x65\x73\x32\x2E\x63\x6F\x64\x65\x20\x21\x3D\x20\x32\x30\x30\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x73\x65\x74\x28\x72\x65\x73\x32\x2E\x64\x61\x74\x61\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x73\x65\x74\x28\x6E\x6F\x64\x65\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6E\x6F\x64\x65\x2E\x69\x73\x5F\x64\x69\x72\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x5F\x70\x61\x74\x68\x2E\x6F\x70\x65\x6E\x28\x6E\x6F\x64\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x5F\x6C\x69\x73\x74\x2E\x6F\x70\x65\x6E\x28\x6E\x6F\x64\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x7D\x3B\x0A\x20\x20\x76\x61\x72\x20\x57\x75\x69\x56\x66\x73\x4C\x69\x73\x74\x20\x3D\x20\x63\x6C\x61\x73\x73\x20\x7B\x0A\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x72\x75\x63\x74\x6F\x72\x28\x6F\x6E\x43\x6C\x69\x63\x6B\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x43\x6C\x69\x63\x6B\x20\x3D\x20\x6F\x6E\x43\x6C\x69\x63\x6B\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x64\x65\x20\x3D\x20\x6E\x75\x6C\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x28\x22\x64\x69\x76\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x63\x6C\x61\x73\x73\x4C\x69\x73\x74\x2E\x61\x64\x64\x28\x43\x4C\x41\x53\x53\x5F\x56\x46\x53\x5F\x4C\x49\x53\x54\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x73\x74\x79\x6C\x65\x2E\x62\x6F\x72\x64\x65\x72\x57\x69\x64\x74\x68\x20\x3D\x20\x22\x31\x70\x78\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x73\x74\x79\x6C\x65\x2E\x62\x6F\x72\x64\x65\x72\x53\x74\x79\x6C\x65\x20\x3D\x20\x22\x73\x6F\x6C\x69\x64\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x73\x74\x79\x6C\x65\x2E\x62\x6F\x72\x64\x65\x72\x43\x6F\x6C\x6F\x72\x20\x3D\x20\x22\x73\x69\x6C\x76\x65\x72\x22\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x2F\x2F\x20\x66\x69\x6C\x74\x65\x72\x20\x72\x65\x2D\x72\x65\x6E\x64\x65\x72\x20\x74\x68\x65\x20\x6C\x69\x73\x74\x20\x62\x79\x20\x69\x6E\x63\x6C\x75\x64\x69\x6E\x67\x20\x6F\x6E\x6C\x79\x20\x74\x68\x65\x20\x6E\x6F\x64\x65\x20\x74\x68\x61\x74\x20\x68\x61\x76\x65\x20\x6E\x61\x6D\x65\x0A\x20\x20\x20\x20\x2F\x2F\x20\x6D\x61\x74\x63\x68\x20\x77\x69\x74\x68\x20\x22\x74\x65\x78\x74\x22\x2E\x0A\x20\x20\x20\x20\x66\x69\x6C\x74\x65\x72\x28\x74\x65\x78\x74\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x72\x65\x67\x65\x78\x70\x20\x3D\x20\x6E\x65\x77\x20\x52\x65\x67\x45\x78\x70\x28\x74\x65\x78\x74\x2C\x20\x22\x69\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x66\x6F\x72\x20\x28\x63\x6F\x6E\x73\x74\x20\x65\x6C\x43\x68\x69\x6C\x64\x20\x6F\x66\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x63\x68\x69\x6C\x64\x72\x65\x6E\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x72\x65\x67\x65\x78\x70\x2E\x74\x65\x73\x74\x28\x65\x6C\x43\x68\x69\x6C\x64\x2E\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C\x29\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x43\x68\x69\x6C\x64\x2E\x72\x65\x6D\x6F\x76\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x28\x22\x68\x69\x64\x64\x65\x6E\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x20\x65\x6C\x73\x65\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x43\x68\x69\x6C\x64\x2E\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65\x28\x22\x68\x69\x64\x64\x65\x6E\x22\x2C\x20\x22\x74\x72\x75\x65\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x6F\x70\x65\x6E\x28\x6E\x6F\x64\x65\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x64\x65\x20\x3D\x20\x6E\x6F\x64\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C\x20\x3D\x20\x22\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x21\x74\x68\x69\x73\x2E\x6E\x6F\x64\x65\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x21\x74\x68\x69\x73\x2E\x6E\x6F\x64\x65\x2E\x63\x68\x69\x6C\x64\x73\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x66\x6F\x72\x20\x28\x63\x6F\x6E\x73\x74\x20\x63\x20\x6F\x66\x20\x74\x68\x69\x73\x2E\x6E\x6F\x64\x65\x2E\x63\x68\x69\x6C\x64\x73\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x28\x22\x64\x69\x76\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x2E\x73\x74\x79\x6C\x65\x2E\x70\x61\x64\x64\x69\x6E\x67\x20\x3D\x20\x22\x31\x65\x6D\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x2E\x73\x74\x79\x6C\x65\x2E\x63\x75\x72\x73\x6F\x72\x20\x3D\x20\x22\x70\x6F\x69\x6E\x74\x65\x72\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x2E\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65\x28\x22\x74\x61\x62\x69\x6E\x64\x65\x78\x22\x2C\x20\x22\x30\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x2E\x69\x6E\x6E\x65\x72\x54\x65\x78\x74\x20\x3D\x20\x63\x2E\x6E\x61\x6D\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\x2E\x69\x73\x5F\x64\x69\x72\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x2E\x69\x6E\x6E\x65\x72\x54\x65\x78\x74\x20\x2B\x3D\x20\x22\x2F\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x2E\x73\x74\x79\x6C\x65\x2E\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72\x20\x3D\x20\x22\x63\x6F\x72\x6E\x73\x69\x6C\x6B\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x2E\x6F\x6E\x63\x6C\x69\x63\x6B\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x43\x6C\x69\x63\x6B\x28\x63\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x2E\x6F\x6E\x6B\x65\x79\x64\x6F\x77\x6E\x20\x3D\x20\x28\x65\x76\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x76\x2E\x6B\x65\x79\x20\x21\x3D\x3D\x20\x22\x45\x6E\x74\x65\x72\x22\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x74\x72\x75\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x43\x6C\x69\x63\x6B\x28\x63\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x66\x6F\x63\x75\x73\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x66\x61\x6C\x73\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x2E\x6F\x6E\x62\x6C\x75\x72\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x42\x6C\x75\x72\x28\x63\x2C\x20\x65\x6C\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x2E\x6F\x6E\x6D\x6F\x75\x73\x65\x6F\x75\x74\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x42\x6C\x75\x72\x28\x63\x2C\x20\x65\x6C\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x2E\x6F\x6E\x66\x6F\x63\x75\x73\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x46\x6F\x63\x75\x73\x28\x65\x6C\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x2E\x6F\x6E\x6D\x6F\x75\x73\x65\x6F\x76\x65\x72\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x46\x6F\x63\x75\x73\x28\x65\x6C\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x28\x65\x6C\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x6F\x6E\x42\x6C\x75\x72\x28\x63\x2C\x20\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\x2E\x69\x73\x5F\x64\x69\x72\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x2E\x73\x74\x79\x6C\x65\x2E\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72\x20\x3D\x20\x22\x63\x6F\x72\x6E\x73\x69\x6C\x6B\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x20\x65\x6C\x73\x65\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x2E\x73\x74\x79\x6C\x65\x2E\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72\x20\x3D\x20\x22\x77\x68\x69\x74\x65\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x6F\x6E\x46\x6F\x63\x75\x73\x28\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x2E\x73\x74\x79\x6C\x65\x2E\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72\x20\x3D\x20\x22\x61\x6C\x69\x63\x65\x62\x6C\x75\x65\x22\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x7D\x3B\x0A\x20\x20\x76\x61\x72\x20\x57\x75\x69\x56\x66\x73\x50\x61\x74\x68\x20\x3D\x20\x63\x6C\x61\x73\x73\x20\x7B\x0A\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x72\x75\x63\x74\x6F\x72\x28\x6F\x6E\x43\x6C\x69\x63\x6B\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x28\x22\x64\x69\x76\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x63\x6C\x61\x73\x73\x4C\x69\x73\x74\x2E\x61\x64\x64\x28\x43\x4C\x41\x53\x53\x5F\x56\x46\x53\x5F\x50\x41\x54\x48\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x73\x74\x79\x6C\x65\x2E\x62\x6F\x72\x64\x65\x72\x57\x69\x64\x74\x68\x20\x3D\x20\x22\x31\x70\x78\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x73\x74\x79\x6C\x65\x2E\x62\x6F\x72\x64\x65\x72\x53\x74\x79\x6C\x65\x20\x3D\x20\x22\x73\x6F\x6C\x69\x64\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x73\x74\x79\x6C\x65\x2E\x62\x6F\x72\x64\x65\x72\x43\x6F\x6C\x6F\x72\x20\x3D\x20\x22\x73\x69\x6C\x76\x65\x72\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x73\x74\x79\x6C\x65\x2E\x6F\x76\x65\x72\x66\x6C\x6F\x77\x20\x3D\x20\x22\x61\x75\x74\x6F\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x73\x74\x79\x6C\x65\x2E\x70\x61\x64\x64\x69\x6E\x67\x20\x3D\x20\x22\x31\x30\x70\x78\x20\x31\x30\x70\x78\x20\x32\x30\x70\x78\x20\x30\x70\x78\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x73\x74\x79\x6C\x65\x2E\x77\x68\x69\x74\x65\x53\x70\x61\x63\x65\x20\x3D\x20\x22\x6E\x6F\x77\x72\x61\x70\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x43\x6C\x69\x63\x6B\x20\x3D\x20\x6F\x6E\x43\x6C\x69\x63\x6B\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x6F\x70\x65\x6E\x28\x6E\x6F\x64\x65\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C\x20\x3D\x20\x22\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x6C\x65\x74\x20\x70\x61\x74\x68\x73\x20\x3D\x20\x5B\x5D\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6E\x6F\x64\x65\x2E\x70\x61\x74\x68\x20\x3D\x3D\x20\x22\x2F\x22\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x74\x68\x73\x2E\x70\x75\x73\x68\x28\x6E\x6F\x64\x65\x2E\x70\x61\x74\x68\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x20\x65\x6C\x73\x65\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x74\x68\x73\x20\x3D\x20\x6E\x6F\x64\x65\x2E\x70\x61\x74\x68\x2E\x73\x70\x6C\x69\x74\x28\x22\x2F\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x70\x61\x74\x68\x73\x2E\x66\x6F\x72\x45\x61\x63\x68\x28\x28\x70\x61\x74\x68\x32\x2C\x20\x78\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6C\x65\x74\x20\x66\x75\x6C\x6C\x50\x61\x74\x68\x20\x3D\x20\x22\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6C\x65\x74\x20\x70\x20\x3D\x20\x22\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x78\x20\x3D\x3D\x20\x30\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x70\x20\x3D\x20\x22\x2F\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x75\x6C\x6C\x50\x61\x74\x68\x20\x3D\x20\x22\x2F\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x20\x65\x6C\x73\x65\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x70\x20\x3D\x20\x70\x61\x74\x68\x32\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x75\x6C\x6C\x50\x61\x74\x68\x20\x3D\x20\x70\x61\x74\x68\x73\x2E\x73\x6C\x69\x63\x65\x28\x30\x2C\x20\x78\x20\x2B\x20\x31\x29\x2E\x6A\x6F\x69\x6E\x28\x22\x2F\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x63\x72\x75\x6D\x62\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x28\x22\x73\x70\x61\x6E\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x72\x75\x6D\x62\x2E\x73\x74\x79\x6C\x65\x2E\x70\x61\x64\x64\x69\x6E\x67\x20\x3D\x20\x22\x31\x65\x6D\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x72\x75\x6D\x62\x2E\x73\x74\x79\x6C\x65\x2E\x63\x75\x72\x73\x6F\x72\x20\x3D\x20\x22\x70\x6F\x69\x6E\x74\x65\x72\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x72\x75\x6D\x62\x2E\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65\x28\x22\x74\x61\x62\x69\x6E\x64\x65\x78\x22\x2C\x20\x22\x30\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x72\x75\x6D\x62\x2E\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C\x20\x3D\x20\x70\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x72\x75\x6D\x62\x2E\x6F\x6E\x63\x6C\x69\x63\x6B\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x43\x6C\x69\x63\x6B\x28\x66\x75\x6C\x6C\x50\x61\x74\x68\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x72\x75\x6D\x62\x2E\x6F\x6E\x6B\x65\x79\x64\x6F\x77\x6E\x20\x3D\x20\x28\x65\x76\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x76\x2E\x6B\x65\x79\x20\x21\x3D\x3D\x20\x22\x45\x6E\x74\x65\x72\x22\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x74\x72\x75\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x43\x6C\x69\x63\x6B\x28\x66\x75\x6C\x6C\x50\x61\x74\x68\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x66\x6F\x63\x75\x73\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x66\x61\x6C\x73\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x72\x75\x6D\x62\x2E\x6F\x6E\x6D\x6F\x75\x73\x65\x6F\x75\x74\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x42\x6C\x75\x72\x28\x63\x72\x75\x6D\x62\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x72\x75\x6D\x62\x2E\x6F\x6E\x62\x6C\x75\x72\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x42\x6C\x75\x72\x28\x63\x72\x75\x6D\x62\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x72\x75\x6D\x62\x2E\x6F\x6E\x6D\x6F\x75\x73\x65\x6F\x76\x65\x72\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x46\x6F\x63\x75\x73\x28\x63\x72\x75\x6D\x62\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x72\x75\x6D\x62\x2E\x6F\x6E\x66\x6F\x63\x75\x73\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x46\x6F\x63\x75\x73\x28\x63\x72\x75\x6D\x62\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x6C\x2E\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x28\x63\x72\x75\x6D\x62\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x6F\x6E\x42\x6C\x75\x72\x28\x63\x72\x75\x6D\x62\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x63\x72\x75\x6D\x62\x2E\x73\x74\x79\x6C\x65\x2E\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72\x20\x3D\x20\x22\x77\x68\x69\x74\x65\x22\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x6F\x6E\x46\x6F\x63\x75\x73\x28\x63\x72\x75\x6D\x62\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x63\x72\x75\x6D\x62\x2E\x73\x74\x79\x6C\x65\x2E\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72\x20\x3D\x20\x22\x61\x6C\x69\x63\x65\x62\x6C\x75\x65\x22\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x7D\x3B\x0A\x0A\x20\x20\x2F\x2F\x20\x5F\x77\x75\x69\x2F\x61\x77\x77\x61\x6E\x2E\x74\x73\x0A\x20\x20\x76\x61\x72\x20\x43\x4C\x41\x53\x53\x5F\x45\x44\x49\x54\x4F\x52\x5F\x41\x43\x54\x49\x4F\x4E\x20\x3D\x20\x22\x65\x64\x69\x74\x6F\x72\x5F\x61\x63\x74\x69\x6F\x6E\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x41\x57\x57\x41\x4E\x5F\x4E\x41\x56\x5F\x4C\x45\x46\x54\x20\x3D\x20\x22\x61\x77\x77\x61\x6E\x5F\x6E\x61\x76\x5F\x6C\x65\x66\x74\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x42\x54\x4E\x5F\x44\x45\x43\x52\x59\x50\x54\x20\x3D\x20\x22\x63\x6F\x6D\x5F\x62\x74\x6E\x5F\x64\x65\x63\x72\x79\x70\x74\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x42\x54\x4E\x5F\x45\x4E\x43\x52\x59\x50\x54\x20\x3D\x20\x22\x63\x6F\x6D\x5F\x62\x74\x6E\x5F\x65\x6E\x63\x72\x79\x70\x74\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x42\x54\x4E\x5F\x45\x58\x45\x43\x5F\x4C\x4F\x43\x41\x4C\x20\x3D\x20\x22\x63\x6F\x6D\x5F\x62\x74\x6E\x5F\x6C\x6F\x63\x61\x6C\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x42\x54\x4E\x5F\x45\x58\x45\x43\x5F\x52\x45\x4D\x4F\x54\x45\x20\x3D\x20\x22\x63\x6F\x6D\x5F\x62\x74\x6E\x5F\x72\x65\x6D\x6F\x74\x65\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x42\x54\x4E\x5F\x4E\x45\x57\x5F\x44\x49\x52\x20\x3D\x20\x22\x63\x6F\x6D\x5F\x62\x74\x6E\x5F\x6E\x65\x77\x5F\x64\x69\x72\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x42\x54\x4E\x5F\x4E\x45\x57\x5F\x46\x49\x4C\x45\x20\x3D\x20\x22\x63\x6F\x6D\x5F\x62\x74\x6E\x5F\x6E\x65\x77\x5F\x66\x69\x6C\x65\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x42\x54\x4E\x5F\x52\x45\x4D\x4F\x56\x45\x20\x3D\x20\x22\x63\x6F\x6D\x5F\x62\x74\x6E\x5F\x72\x65\x6D\x6F\x76\x65\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x42\x54\x4E\x5F\x53\x41\x56\x45\x20\x3D\x20\x22\x63\x6F\x6D\x5F\x62\x74\x6E\x5F\x73\x61\x76\x65\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x43\x4F\x4D\x5F\x45\x44\x49\x54\x4F\x52\x5F\x4F\x55\x54\x20\x3D\x20\x22\x63\x6F\x6D\x5F\x65\x64\x69\x74\x6F\x72\x5F\x6F\x75\x74\x70\x75\x74\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x43\x4F\x4D\x5F\x52\x45\x53\x49\x5A\x45\x5F\x45\x44\x49\x54\x4F\x52\x20\x3D\x20\x22\x63\x6F\x6D\x5F\x72\x65\x73\x69\x7A\x65\x5F\x65\x64\x69\x74\x6F\x72\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x43\x4F\x4D\x5F\x52\x45\x53\x49\x5A\x45\x5F\x56\x46\x53\x20\x3D\x20\x22\x63\x6F\x6D\x5F\x72\x65\x73\x69\x7A\x65\x5F\x76\x66\x73\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x45\x44\x49\x54\x4F\x52\x20\x3D\x20\x22\x63\x6F\x6D\x5F\x65\x64\x69\x74\x6F\x72\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x49\x4E\x50\x5F\x4C\x49\x4E\x45\x5F\x52\x41\x4E\x47\x45\x20\x3D\x20\x22\x63\x6F\x6D\x5F\x69\x6E\x70\x5F\x6C\x69\x6E\x65\x5F\x72\x61\x6E\x67\x65\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x56\x46\x53\x5F\x49\x4E\x50\x55\x54\x20\x3D\x20\x22\x63\x6F\x6D\x5F\x76\x66\x73\x5F\x69\x6E\x70\x75\x74\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x56\x46\x53\x20\x3D\x20\x22\x63\x6F\x6D\x5F\x76\x66\x73\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x56\x46\x53\x5F\x50\x41\x54\x48\x20\x3D\x20\x22\x76\x66\x73\x5F\x70\x61\x74\x68\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x4F\x55\x54\x50\x55\x54\x20\x3D\x20\x22\x6F\x75\x74\x70\x75\x74\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x49\x44\x5F\x4F\x55\x54\x50\x55\x54\x5F\x57\x52\x41\x50\x50\x45\x52\x20\x3D\x20\x22\x6F\x75\x74\x70\x75\x74\x5F\x77\x72\x61\x70\x70\x65\x72\x22\x3B\x0A\x20\x20\x76\x61\x72\x20\x4D\x41\x58\x5F\x46\x49\x4C\x45\x5F\x53\x49\x5A\x45\x20\x3D\x20\x31\x65\x36\x3B\x0A\x20\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x20\x72\x65\x6E\x64\x65\x72\x48\x74\x6D\x6C\x28\x29\x20\x7B\x0A\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x28\x22\x64\x69\x76\x22\x29\x3B\x0A\x20\x20\x20\x20\x65\x6C\x2E\x63\x6C\x61\x73\x73\x4C\x69\x73\x74\x2E\x61\x64\x64\x28\x22\x61\x77\x77\x61\x6E\x22\x29\x3B\x0A\x20\x20\x20\x20\x65\x6C\x2E\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C\x20\x3D\x20\x60\x0A\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x41\x57\x57\x41\x4E\x5F\x4E\x41\x56\x5F\x4C\x45\x46\x54\x7D\x22\x20\x63\x6C\x61\x73\x73\x3D\x22\x61\x77\x77\x61\x6E\x5F\x6E\x61\x76\x5F\x6C\x65\x66\x74\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x61\x77\x77\x61\x6E\x5F\x76\x66\x73\x5F\x66\x6F\x72\x6D\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x24\x7B\x49\x44\x5F\x56\x46\x53\x5F\x49\x4E\x50\x55\x54\x7D\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x69\x6E\x70\x75\x74\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x56\x46\x53\x5F\x49\x4E\x50\x55\x54\x7D\x22\x20\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72\x3D\x22\x49\x6E\x70\x75\x74\x20\x74\x65\x78\x74\x20\x74\x6F\x20\x66\x69\x6C\x74\x65\x72\x20\x28\x61\x6C\x6C\x6F\x77\x20\x72\x65\x67\x65\x78\x70\x29\x22\x20\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x62\x75\x74\x74\x6F\x6E\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x42\x54\x4E\x5F\x4E\x45\x57\x5F\x44\x49\x52\x7D\x22\x3E\x4E\x65\x77\x20\x64\x69\x72\x2E\x3C\x2F\x62\x75\x74\x74\x6F\x6E\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x62\x75\x74\x74\x6F\x6E\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x42\x54\x4E\x5F\x4E\x45\x57\x5F\x46\x49\x4C\x45\x7D\x22\x3E\x4E\x65\x77\x20\x66\x69\x6C\x65\x3C\x2F\x62\x75\x74\x74\x6F\x6E\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x62\x75\x74\x74\x6F\x6E\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x42\x54\x4E\x5F\x52\x45\x4D\x4F\x56\x45\x7D\x22\x3E\x52\x65\x6D\x6F\x76\x65\x3C\x2F\x62\x75\x74\x74\x6F\x6E\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x56\x46\x53\x7D\x22\x3E\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x43\x4F\x4D\x5F\x52\x45\x53\x49\x5A\x45\x5F\x56\x46\x53\x7D\x22\x3E\x26\x23\x39\x38\x36\x38\x3B\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x43\x4F\x4D\x5F\x45\x44\x49\x54\x4F\x52\x5F\x4F\x55\x54\x7D\x22\x20\x63\x6C\x61\x73\x73\x3D\x22\x61\x77\x77\x61\x6E\x5F\x63\x6F\x6E\x74\x65\x6E\x74\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x62\x6F\x78\x68\x65\x61\x64\x65\x72\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x73\x70\x61\x6E\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x61\x67\x22\x3E\x46\x69\x6C\x65\x3C\x2F\x73\x70\x61\x6E\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x73\x70\x61\x6E\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x56\x46\x53\x5F\x50\x41\x54\x48\x7D\x22\x3E\x2D\x3C\x2F\x73\x70\x61\x6E\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x62\x75\x74\x74\x6F\x6E\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x42\x54\x4E\x5F\x53\x41\x56\x45\x7D\x22\x20\x64\x69\x73\x61\x62\x6C\x65\x64\x3D\x22\x74\x72\x75\x65\x22\x3E\x53\x61\x76\x65\x3C\x2F\x62\x75\x74\x74\x6F\x6E\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x62\x75\x74\x74\x6F\x6E\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x42\x54\x4E\x5F\x45\x4E\x43\x52\x59\x50\x54\x7D\x22\x20\x64\x69\x73\x61\x62\x6C\x65\x64\x3D\x22\x74\x72\x75\x65\x22\x3E\x45\x6E\x63\x72\x79\x70\x74\x3C\x2F\x62\x75\x74\x74\x6F\x6E\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x62\x75\x74\x74\x6F\x6E\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x42\x54\x4E\x5F\x44\x45\x43\x52\x59\x50\x54\x7D\x22\x20\x64\x69\x73\x61\x62\x6C\x65\x64\x3D\x22\x74\x72\x75\x65\x22\x3E\x44\x65\x63\x72\x79\x70\x74\x3C\x2F\x62\x75\x74\x74\x6F\x6E\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x45\x44\x49\x54\x4F\x52\x7D\x22\x3E\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x43\x4F\x4D\x5F\x52\x45\x53\x49\x5A\x45\x5F\x45\x44\x49\x54\x4F\x52\x7D\x22\x3E\x26\x23\x39\x38\x36\x38\x3B\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x4F\x55\x54\x50\x55\x54\x5F\x57\x52\x41\x50\x50\x45\x52\x7D\x22\x20\x63\x6C\x61\x73\x73\x3D\x22\x6F\x75\x74\x70\x75\x74\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x24\x7B\x43\x4C\x41\x53\x53\x5F\x45\x44\x49\x54\x4F\x52\x5F\x41\x43\x54\x49\x4F\x4E\x7D\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x45\x78\x65\x63\x75\x74\x65\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x69\x6E\x70\x75\x74\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x49\x4E\x50\x5F\x4C\x49\x4E\x45\x5F\x52\x41\x4E\x47\x45\x7D\x22\x20\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72\x3D\x22\x45\x78\x3A\x20\x31\x2C\x32\x2D\x34\x2C\x35\x2D\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6F\x6E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x62\x75\x74\x74\x6F\x6E\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x42\x54\x4E\x5F\x45\x58\x45\x43\x5F\x4C\x4F\x43\x41\x4C\x7D\x22\x20\x64\x69\x73\x61\x62\x6C\x65\x64\x3D\x22\x74\x72\x75\x65\x22\x3E\x4C\x6F\x63\x61\x6C\x3C\x2F\x62\x75\x74\x74\x6F\x6E\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6F\x72\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x62\x75\x74\x74\x6F\x6E\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x42\x54\x4E\x5F\x45\x58\x45\x43\x5F\x52\x45\x4D\x4F\x54\x45\x7D\x22\x20\x64\x69\x73\x61\x62\x6C\x65\x64\x3D\x22\x74\x72\x75\x65\x22\x3E\x52\x65\x6D\x6F\x74\x65\x3C\x2F\x62\x75\x74\x74\x6F\x6E\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x26\x6E\x62\x73\x70\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x2F\x64\x6F\x63\x2F\x61\x77\x77\x61\x6E\x2E\x68\x74\x6D\x6C\x23\x63\x6F\x6D\x6D\x61\x6E\x64\x5F\x5F\x6C\x6F\x63\x61\x6C\x5F\x5F\x61\x6E\x64\x5F\x5F\x70\x6C\x61\x79\x5F\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x5F\x62\x6C\x61\x6E\x6B\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x26\x23\x78\x32\x31\x33\x39\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x61\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x64\x69\x76\x20\x69\x64\x3D\x22\x24\x7B\x49\x44\x5F\x4F\x55\x54\x50\x55\x54\x7D\x22\x3E\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x64\x69\x76\x3E\x0A\x20\x20\x20\x20\x60\x3B\x0A\x20\x20\x20\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x62\x6F\x64\x79\x2E\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x28\x65\x6C\x29\x3B\x0A\x20\x20\x7D\x0A\x20\x20\x76\x61\x72\x20\x41\x77\x77\x61\x6E\x20\x3D\x20\x63\x6C\x61\x73\x73\x20\x7B\x0A\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x72\x75\x63\x74\x6F\x72\x28\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x75\x72\x72\x65\x6E\x74\x4E\x6F\x64\x65\x20\x3D\x20\x6E\x75\x6C\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x2F\x2F\x20\x63\x75\x72\x72\x65\x6E\x74\x46\x69\x6C\x65\x20\x73\x74\x6F\x72\x65\x20\x74\x68\x65\x20\x73\x65\x6C\x65\x63\x74\x65\x64\x20\x66\x69\x6C\x65\x20\x6E\x6F\x64\x65\x20\x6F\x70\x65\x6E\x65\x64\x20\x69\x6E\x20\x65\x64\x69\x74\x6F\x72\x2E\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x75\x72\x72\x65\x6E\x74\x46\x69\x6C\x65\x20\x3D\x20\x6E\x75\x6C\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x20\x3D\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6D\x6F\x64\x65\x3A\x20\x22\x6C\x6F\x63\x61\x6C\x22\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x73\x63\x72\x69\x70\x74\x3A\x20\x22\x22\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3A\x20\x22\x22\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6C\x69\x6E\x65\x5F\x72\x61\x6E\x67\x65\x3A\x20\x22\x22\x0A\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x72\x67\x43\x6F\x6E\x74\x65\x6E\x74\x20\x3D\x20\x22\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x5F\x70\x6F\x73\x78\x20\x3D\x20\x30\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x5F\x70\x6F\x73\x79\x20\x3D\x20\x30\x3B\x0A\x20\x20\x20\x20\x20\x20\x6C\x65\x74\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x49\x44\x5F\x41\x57\x57\x41\x4E\x5F\x4E\x41\x56\x5F\x4C\x45\x46\x54\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x4E\x61\x76\x4C\x65\x66\x74\x20\x3D\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x49\x44\x5F\x43\x4F\x4D\x5F\x45\x44\x49\x54\x4F\x52\x5F\x4F\x55\x54\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x45\x64\x69\x74\x6F\x72\x4F\x75\x74\x70\x75\x74\x20\x3D\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x49\x44\x5F\x43\x4F\x4D\x5F\x52\x45\x53\x49\x5A\x45\x5F\x56\x46\x53\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x64\x6F\x52\x65\x73\x69\x7A\x65\x56\x66\x73\x20\x3D\x20\x28\x65\x76\x29\x20\x3D\x3E\x20\x74\x68\x69\x73\x2E\x64\x6F\x52\x65\x73\x69\x7A\x65\x56\x66\x73\x28\x65\x76\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x2E\x61\x64\x64\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72\x28\x22\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E\x22\x2C\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x5F\x70\x6F\x73\x78\x20\x3D\x20\x30\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x61\x64\x64\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72\x28\x22\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65\x22\x2C\x20\x64\x6F\x52\x65\x73\x69\x7A\x65\x56\x66\x73\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x61\x64\x64\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72\x28\x22\x6D\x6F\x75\x73\x65\x75\x70\x22\x2C\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x72\x65\x6D\x6F\x76\x65\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72\x28\x22\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65\x22\x2C\x20\x64\x6F\x52\x65\x73\x69\x7A\x65\x56\x66\x73\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x5F\x70\x6F\x73\x78\x20\x3D\x20\x30\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x49\x44\x5F\x42\x54\x4E\x5F\x45\x58\x45\x43\x5F\x4C\x4F\x43\x41\x4C\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x4C\x6F\x63\x61\x6C\x20\x3D\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x4C\x6F\x63\x61\x6C\x2E\x6F\x6E\x63\x6C\x69\x63\x6B\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x78\x65\x63\x4C\x6F\x63\x61\x6C\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x49\x44\x5F\x42\x54\x4E\x5F\x45\x58\x45\x43\x5F\x52\x45\x4D\x4F\x54\x45\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x52\x65\x6D\x6F\x74\x65\x20\x3D\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x52\x65\x6D\x6F\x74\x65\x2E\x6F\x6E\x63\x6C\x69\x63\x6B\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x78\x65\x63\x52\x65\x6D\x6F\x74\x65\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x49\x44\x5F\x42\x54\x4E\x5F\x4E\x45\x57\x5F\x44\x49\x52\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x4E\x65\x77\x44\x69\x72\x20\x3D\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x4E\x65\x77\x44\x69\x72\x2E\x6F\x6E\x63\x6C\x69\x63\x6B\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x65\x77\x4E\x6F\x64\x65\x28\x74\x72\x75\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x49\x44\x5F\x42\x54\x4E\x5F\x4E\x45\x57\x5F\x46\x49\x4C\x45\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x4E\x65\x77\x46\x69\x6C\x65\x20\x3D\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x4E\x65\x77\x46\x69\x6C\x65\x2E\x6F\x6E\x63\x6C\x69\x63\x6B\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x65\x77\x4E\x6F\x64\x65\x28\x66\x61\x6C\x73\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x49\x44\x5F\x42\x54\x4E\x5F\x52\x45\x4D\x4F\x56\x45\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x52\x65\x6D\x6F\x76\x65\x20\x3D\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x52\x65\x6D\x6F\x76\x65\x2E\x6F\x6E\x63\x6C\x69\x63\x6B\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x43\x6C\x69\x63\x6B\x52\x65\x6D\x6F\x76\x65\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x49\x44\x5F\x42\x54\x4E\x5F\x53\x41\x56\x45\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x53\x61\x76\x65\x20\x3D\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x53\x61\x76\x65\x2E\x6F\x6E\x63\x6C\x69\x63\x6B\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x43\x6C\x69\x63\x6B\x53\x61\x76\x65\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x49\x44\x5F\x42\x54\x4E\x5F\x45\x4E\x43\x52\x59\x50\x54\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x45\x6E\x63\x72\x79\x70\x74\x20\x3D\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x45\x6E\x63\x72\x79\x70\x74\x2E\x6F\x6E\x63\x6C\x69\x63\x6B\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x43\x6C\x69\x63\x6B\x45\x6E\x63\x72\x79\x70\x74\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x49\x44\x5F\x42\x54\x4E\x5F\x44\x45\x43\x52\x59\x50\x54\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x44\x65\x63\x72\x79\x70\x74\x20\x3D\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x44\x65\x63\x72\x79\x70\x74\x2E\x6F\x6E\x63\x6C\x69\x63\x6B\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x43\x6C\x69\x63\x6B\x44\x65\x63\x72\x79\x70\x74\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x49\x44\x5F\x49\x4E\x50\x5F\x4C\x49\x4E\x45\x5F\x52\x41\x4E\x47\x45\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x21\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x65\x72\x72\x6F\x72\x28\x60\x66\x61\x69\x6C\x65\x64\x20\x74\x6F\x20\x67\x65\x74\x20\x65\x6C\x65\x6D\x65\x6E\x74\x20\x62\x79\x20\x49\x44\x20\x23\x24\x7B\x49\x44\x5F\x49\x4E\x50\x5F\x4C\x49\x4E\x45\x5F\x52\x41\x4E\x47\x45\x7D\x60\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x49\x6E\x70\x75\x74\x4C\x69\x6E\x65\x52\x61\x6E\x67\x65\x20\x3D\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x49\x44\x5F\x56\x46\x53\x5F\x49\x4E\x50\x55\x54\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x56\x66\x73\x49\x6E\x70\x75\x74\x20\x3D\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x56\x66\x73\x49\x6E\x70\x75\x74\x2E\x6F\x6E\x69\x6E\x70\x75\x74\x20\x3D\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x56\x66\x73\x49\x6E\x70\x75\x74\x46\x69\x6C\x74\x65\x72\x28\x74\x68\x69\x73\x2E\x63\x6F\x6D\x56\x66\x73\x49\x6E\x70\x75\x74\x2E\x76\x61\x6C\x75\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x49\x44\x5F\x56\x46\x53\x5F\x50\x41\x54\x48\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x46\x69\x6C\x65\x50\x61\x74\x68\x20\x3D\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x49\x44\x5F\x4F\x55\x54\x50\x55\x54\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x4F\x75\x74\x70\x75\x74\x20\x3D\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x49\x44\x5F\x4F\x55\x54\x50\x55\x54\x5F\x57\x52\x41\x50\x50\x45\x52\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x4F\x75\x74\x70\x75\x74\x57\x72\x61\x70\x70\x65\x72\x20\x3D\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x65\x64\x69\x74\x6F\x72\x4F\x70\x74\x73\x20\x3D\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3A\x20\x49\x44\x5F\x45\x44\x49\x54\x4F\x52\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x69\x73\x45\x64\x69\x74\x61\x62\x6C\x65\x3A\x20\x74\x72\x75\x65\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6F\x6E\x53\x61\x76\x65\x3A\x20\x28\x63\x6F\x6E\x74\x65\x6E\x74\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x64\x69\x74\x6F\x72\x4F\x6E\x53\x61\x76\x65\x28\x63\x6F\x6E\x74\x65\x6E\x74\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x64\x69\x74\x6F\x72\x20\x3D\x20\x6E\x65\x77\x20\x57\x75\x69\x45\x64\x69\x74\x6F\x72\x28\x65\x64\x69\x74\x6F\x72\x4F\x70\x74\x73\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x65\x6C\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x49\x44\x5F\x45\x44\x49\x54\x4F\x52\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x45\x64\x69\x74\x6F\x72\x20\x3D\x20\x65\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x20\x3D\x20\x6E\x65\x77\x20\x57\x75\x69\x4E\x6F\x74\x69\x66\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x76\x66\x73\x4F\x70\x74\x73\x20\x3D\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3A\x20\x49\x44\x5F\x56\x46\x53\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6F\x70\x65\x6E\x3A\x20\x28\x70\x61\x74\x68\x32\x2C\x20\x69\x73\x44\x69\x72\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x74\x68\x69\x73\x2E\x6F\x70\x65\x6E\x28\x70\x61\x74\x68\x32\x2C\x20\x69\x73\x44\x69\x72\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6F\x70\x65\x6E\x4E\x6F\x64\x65\x3A\x20\x28\x6E\x6F\x64\x65\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x74\x68\x69\x73\x2E\x6F\x70\x65\x6E\x4E\x6F\x64\x65\x28\x6E\x6F\x64\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x76\x66\x73\x20\x3D\x20\x6E\x65\x77\x20\x57\x75\x69\x56\x66\x73\x28\x76\x66\x73\x4F\x70\x74\x73\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x77\x69\x6E\x64\x6F\x77\x2E\x6F\x6E\x68\x61\x73\x68\x63\x68\x61\x6E\x67\x65\x20\x3D\x20\x28\x65\x76\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x65\x76\x2E\x70\x72\x65\x76\x65\x6E\x74\x44\x65\x66\x61\x75\x6C\x74\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x68\x61\x73\x68\x63\x68\x61\x6E\x67\x65\x20\x3D\x20\x65\x76\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x75\x72\x6C\x20\x3D\x20\x6E\x65\x77\x20\x55\x52\x4C\x28\x68\x61\x73\x68\x63\x68\x61\x6E\x67\x65\x2E\x6E\x65\x77\x55\x52\x4C\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x6E\x48\x61\x73\x68\x43\x68\x61\x6E\x67\x65\x28\x75\x72\x6C\x2E\x68\x61\x73\x68\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x65\x6C\x52\x65\x73\x69\x7A\x65\x45\x64\x69\x74\x6F\x72\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x49\x44\x5F\x43\x4F\x4D\x5F\x52\x45\x53\x49\x5A\x45\x5F\x45\x44\x49\x54\x4F\x52\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x65\x6C\x52\x65\x73\x69\x7A\x65\x45\x64\x69\x74\x6F\x72\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x6F\x6E\x4D\x6F\x75\x73\x65\x4D\x6F\x76\x65\x20\x3D\x20\x28\x65\x76\x29\x20\x3D\x3E\x20\x74\x68\x69\x73\x2E\x64\x6F\x52\x65\x73\x69\x7A\x65\x45\x64\x69\x74\x6F\x72\x28\x65\x76\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6C\x52\x65\x73\x69\x7A\x65\x45\x64\x69\x74\x6F\x72\x2E\x61\x64\x64\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72\x28\x22\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E\x22\x2C\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x5F\x70\x6F\x73\x79\x20\x3D\x20\x30\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x61\x64\x64\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72\x28\x22\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65\x22\x2C\x20\x6F\x6E\x4D\x6F\x75\x73\x65\x4D\x6F\x76\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x61\x64\x64\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72\x28\x22\x6D\x6F\x75\x73\x65\x75\x70\x22\x2C\x20\x28\x29\x20\x3D\x3E\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x72\x65\x6D\x6F\x76\x65\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72\x28\x22\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65\x22\x2C\x20\x6F\x6E\x4D\x6F\x75\x73\x65\x4D\x6F\x76\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x5F\x70\x6F\x73\x79\x20\x3D\x20\x30\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x6F\x6E\x48\x61\x73\x68\x43\x68\x61\x6E\x67\x65\x28\x68\x61\x73\x68\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x68\x61\x73\x68\x20\x3D\x3D\x3D\x20\x22\x22\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x68\x61\x73\x68\x20\x3D\x20\x22\x23\x2F\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x68\x61\x73\x68\x20\x3D\x20\x68\x61\x73\x68\x2E\x73\x75\x62\x73\x74\x72\x69\x6E\x67\x28\x31\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x76\x66\x73\x2E\x6F\x70\x65\x6E\x44\x69\x72\x28\x68\x61\x73\x68\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x2F\x2F\x20\x63\x6F\x6E\x66\x69\x72\x6D\x57\x68\x65\x6E\x44\x69\x72\x74\x79\x20\x63\x68\x65\x63\x6B\x20\x69\x66\x20\x74\x68\x65\x20\x65\x64\x69\x74\x6F\x72\x20\x63\x6F\x6E\x74\x65\x6E\x74\x20\x68\x61\x73\x20\x63\x68\x61\x6E\x67\x65\x73\x20\x62\x65\x66\x6F\x72\x65\x20\x6F\x70\x65\x6E\x69\x6E\x67\x0A\x20\x20\x20\x20\x2F\x2F\x20\x6E\x65\x77\x20\x66\x69\x6C\x65\x2E\x0A\x20\x20\x20\x20\x2F\x2F\x20\x49\x66\x20\x79\x65\x73\x2C\x20\x64\x69\x73\x70\x6C\x61\x79\x20\x64\x69\x61\x6C\x6F\x67\x20\x62\x6F\x78\x20\x74\x6F\x20\x63\x6F\x6E\x66\x69\x72\x6D\x20\x77\x68\x65\x74\x68\x65\x72\x20\x63\x6F\x6E\x74\x69\x6E\x75\x69\x6E\x67\x20\x6F\x70\x65\x6E\x69\x6E\x67\x20\x66\x69\x6C\x65\x0A\x20\x20\x20\x20\x2F\x2F\x20\x6F\x72\x20\x63\x61\x6E\x63\x65\x6C\x20\x69\x74\x2E\x0A\x20\x20\x20\x20\x2F\x2F\x20\x49\x74\x20\x77\x69\x6C\x6C\x20\x72\x65\x74\x75\x72\x6E\x20\x74\x72\x75\x65\x20\x74\x6F\x20\x63\x6F\x6E\x74\x69\x6E\x75\x65\x20\x6F\x70\x65\x6E\x69\x6E\x67\x20\x66\x69\x6C\x65\x20\x6F\x72\x20\x66\x61\x6C\x73\x65\x20\x69\x66\x20\x75\x73\x65\x72\x20\x77\x61\x6E\x74\x73\x20\x74\x6F\x0A\x20\x20\x20\x20\x2F\x2F\x20\x63\x61\x6E\x63\x65\x6C\x20\x69\x74\x2E\x0A\x20\x20\x20\x20\x63\x6F\x6E\x66\x69\x72\x6D\x57\x68\x65\x6E\x44\x69\x72\x74\x79\x28\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x2E\x73\x63\x72\x69\x70\x74\x20\x3D\x3D\x3D\x20\x22\x22\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x74\x72\x75\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x6E\x65\x77\x43\x6F\x6E\x74\x65\x6E\x74\x20\x3D\x20\x74\x68\x69\x73\x2E\x65\x64\x69\x74\x6F\x72\x2E\x67\x65\x74\x43\x6F\x6E\x74\x65\x6E\x74\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\x68\x69\x73\x2E\x6F\x72\x67\x43\x6F\x6E\x74\x65\x6E\x74\x20\x3D\x3D\x20\x6E\x65\x77\x43\x6F\x6E\x74\x65\x6E\x74\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x74\x72\x75\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x77\x69\x6E\x64\x6F\x77\x2E\x63\x6F\x6E\x66\x69\x72\x6D\x28\x22\x46\x69\x6C\x65\x20\x68\x61\x73\x20\x63\x68\x61\x6E\x67\x65\x73\x2C\x20\x63\x6F\x6E\x74\x69\x6E\x75\x65\x20\x77\x69\x74\x68\x6F\x75\x74\x20\x73\x61\x76\x65\x3F\x22\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x2F\x2F\x20\x6F\x70\x65\x6E\x20\x66\x65\x74\x63\x68\x20\x74\x68\x65\x20\x6E\x6F\x64\x65\x20\x63\x6F\x6E\x74\x65\x6E\x74\x20\x66\x72\x6F\x6D\x20\x72\x65\x6D\x6F\x74\x65\x20\x73\x65\x72\x76\x65\x72\x2E\x0A\x20\x20\x20\x20\x61\x73\x79\x6E\x63\x20\x6F\x70\x65\x6E\x28\x70\x61\x74\x68\x32\x2C\x20\x69\x73\x44\x69\x72\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x68\x74\x74\x70\x52\x65\x73\x20\x3D\x20\x61\x77\x61\x69\x74\x20\x66\x65\x74\x63\x68\x28\x22\x2F\x61\x77\x77\x61\x6E\x2F\x61\x70\x69\x2F\x66\x73\x3F\x70\x61\x74\x68\x3D\x22\x20\x2B\x20\x70\x61\x74\x68\x32\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x72\x65\x73\x32\x20\x3D\x20\x61\x77\x61\x69\x74\x20\x68\x74\x74\x70\x52\x65\x73\x2E\x6A\x73\x6F\x6E\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x72\x65\x73\x32\x2E\x63\x6F\x64\x65\x20\x21\x3D\x20\x32\x30\x30\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x60\x46\x61\x69\x6C\x65\x64\x20\x74\x6F\x20\x6F\x70\x65\x6E\x20\x24\x7B\x70\x61\x74\x68\x32\x7D\x3A\x20\x24\x7B\x72\x65\x73\x32\x2E\x6D\x65\x73\x73\x61\x67\x65\x7D\x60\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x72\x65\x73\x32\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x6E\x6F\x64\x65\x20\x3D\x20\x72\x65\x73\x32\x2E\x64\x61\x74\x61\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x69\x73\x44\x69\x72\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x75\x72\x72\x65\x6E\x74\x4E\x6F\x64\x65\x20\x3D\x20\x6E\x6F\x64\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\x6E\x64\x6F\x77\x2E\x6C\x6F\x63\x61\x74\x69\x6F\x6E\x2E\x68\x61\x73\x68\x20\x3D\x20\x22\x23\x22\x20\x2B\x20\x70\x61\x74\x68\x32\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x56\x66\x73\x49\x6E\x70\x75\x74\x2E\x76\x61\x6C\x75\x65\x20\x3D\x20\x22\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x72\x65\x73\x32\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x72\x65\x73\x41\x6C\x6C\x6F\x77\x20\x3D\x20\x74\x68\x69\x73\x2E\x69\x73\x45\x64\x69\x74\x41\x6C\x6C\x6F\x77\x65\x64\x28\x6E\x6F\x64\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x72\x65\x73\x41\x6C\x6C\x6F\x77\x2E\x63\x6F\x64\x65\x20\x21\x3D\x20\x32\x30\x30\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x72\x65\x73\x41\x6C\x6C\x6F\x77\x2E\x6D\x65\x73\x73\x61\x67\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x72\x65\x73\x41\x6C\x6C\x6F\x77\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x46\x69\x6C\x65\x50\x61\x74\x68\x2E\x69\x6E\x6E\x65\x72\x54\x65\x78\x74\x20\x3D\x20\x70\x61\x74\x68\x32\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x2E\x73\x63\x72\x69\x70\x74\x20\x3D\x20\x70\x61\x74\x68\x32\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x64\x69\x74\x6F\x72\x2E\x6F\x70\x65\x6E\x28\x6E\x6F\x64\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x75\x72\x72\x65\x6E\x74\x46\x69\x6C\x65\x20\x3D\x20\x6E\x6F\x64\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x72\x67\x43\x6F\x6E\x74\x65\x6E\x74\x20\x3D\x20\x74\x68\x69\x73\x2E\x65\x64\x69\x74\x6F\x72\x2E\x67\x65\x74\x43\x6F\x6E\x74\x65\x6E\x74\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x4C\x6F\x63\x61\x6C\x2E\x64\x69\x73\x61\x62\x6C\x65\x64\x20\x3D\x20\x66\x61\x6C\x73\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x52\x65\x6D\x6F\x74\x65\x2E\x64\x69\x73\x61\x62\x6C\x65\x64\x20\x3D\x20\x66\x61\x6C\x73\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x53\x61\x76\x65\x2E\x64\x69\x73\x61\x62\x6C\x65\x64\x20\x3D\x20\x66\x61\x6C\x73\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x70\x61\x74\x68\x32\x2E\x65\x6E\x64\x73\x57\x69\x74\x68\x28\x22\x2E\x76\x61\x75\x6C\x74\x22\x29\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x44\x65\x63\x72\x79\x70\x74\x2E\x64\x69\x73\x61\x62\x6C\x65\x64\x20\x3D\x20\x66\x61\x6C\x73\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x45\x6E\x63\x72\x79\x70\x74\x2E\x64\x69\x73\x61\x62\x6C\x65\x64\x20\x3D\x20\x74\x72\x75\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x64\x69\x74\x6F\x72\x2E\x73\x65\x74\x45\x64\x69\x74\x61\x62\x6C\x65\x28\x66\x61\x6C\x73\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x20\x65\x6C\x73\x65\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x44\x65\x63\x72\x79\x70\x74\x2E\x64\x69\x73\x61\x62\x6C\x65\x64\x20\x3D\x20\x74\x72\x75\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x42\x74\x6E\x45\x6E\x63\x72\x79\x70\x74\x2E\x64\x69\x73\x61\x62\x6C\x65\x64\x20\x3D\x20\x66\x61\x6C\x73\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x64\x69\x74\x6F\x72\x2E\x73\x65\x74\x45\x64\x69\x74\x61\x62\x6C\x65\x28\x74\x72\x75\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x72\x65\x73\x32\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x2F\x2F\x20\x6F\x70\x65\x6E\x4E\x6F\x64\x65\x20\x69\x73\x20\x61\x6E\x20\x68\x61\x6E\x64\x6C\x65\x72\x20\x74\x68\x61\x74\x20\x77\x69\x6C\x6C\x20\x63\x61\x6C\x6C\x65\x64\x20\x77\x68\x65\x6E\x20\x75\x73\x65\x72\x20\x63\x6C\x69\x63\x6B\x20\x6F\x6E\x20\x6F\x66\x20\x74\x68\x65\x0A\x20\x20\x20\x20\x2F\x2F\x20\x69\x74\x65\x6D\x20\x69\x6E\x20\x74\x68\x65\x20\x6C\x69\x73\x74\x2E\x0A\x20\x20\x20\x20\x61\x73\x79\x6E\x63\x20\x6F\x70\x65\x6E\x4E\x6F\x64\x65\x28\x6E\x6F\x64\x65\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x6C\x65\x74\x20\x72\x65\x73\x32\x20\x3D\x20\x74\x68\x69\x73\x2E\x69\x73\x45\x64\x69\x74\x41\x6C\x6C\x6F\x77\x65\x64\x28\x6E\x6F\x64\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x72\x65\x73\x32\x2E\x63\x6F\x64\x65\x20\x21\x3D\x20\x32\x30\x30\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x72\x65\x73\x32\x2E\x6D\x65\x73\x73\x61\x67\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x72\x65\x73\x32\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x21\x6E\x6F\x64\x65\x2E\x69\x73\x5F\x64\x69\x72\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x6F\x6B\x20\x3D\x20\x74\x68\x69\x73\x2E\x63\x6F\x6E\x66\x69\x72\x6D\x57\x68\x65\x6E\x44\x69\x72\x74\x79\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x21\x6F\x6B\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x72\x65\x73\x32\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x72\x65\x73\x32\x20\x3D\x20\x61\x77\x61\x69\x74\x20\x74\x68\x69\x73\x2E\x6F\x70\x65\x6E\x28\x6E\x6F\x64\x65\x2E\x70\x61\x74\x68\x2C\x20\x6E\x6F\x64\x65\x2E\x69\x73\x5F\x64\x69\x72\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x72\x65\x73\x32\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x69\x73\x45\x64\x69\x74\x41\x6C\x6C\x6F\x77\x65\x64\x28\x6E\x6F\x64\x65\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x72\x65\x73\x32\x20\x3D\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x64\x65\x3A\x20\x34\x31\x32\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6D\x65\x73\x73\x61\x67\x65\x3A\x20\x22\x22\x0A\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6E\x6F\x64\x65\x2E\x73\x69\x7A\x65\x20\x26\x26\x20\x6E\x6F\x64\x65\x2E\x73\x69\x7A\x65\x20\x3E\x20\x4D\x41\x58\x5F\x46\x49\x4C\x45\x5F\x53\x49\x5A\x45\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x73\x32\x2E\x6D\x65\x73\x73\x61\x67\x65\x20\x3D\x20\x60\x54\x68\x65\x20\x66\x69\x6C\x65\x20\x22\x24\x7B\x6E\x6F\x64\x65\x2E\x6E\x61\x6D\x65\x7D\x22\x20\x77\x69\x74\x68\x20\x73\x69\x7A\x65\x20\x24\x7B\x6E\x6F\x64\x65\x2E\x73\x69\x7A\x65\x20\x2F\x20\x31\x30\x32\x34\x7D\x4B\x42\x20\x69\x73\x20\x67\x72\x65\x61\x74\x65\x72\x20\x74\x68\x61\x6E\x20\x6D\x61\x78\x69\x6D\x75\x6D\x20\x24\x7B\x4D\x41\x58\x5F\x46\x49\x4C\x45\x5F\x53\x49\x5A\x45\x20\x2F\x20\x31\x65\x33\x7D\x4B\x42\x2E\x60\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x72\x65\x73\x32\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x72\x65\x73\x32\x2E\x63\x6F\x64\x65\x20\x3D\x20\x32\x30\x30\x3B\x0A\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x72\x65\x73\x32\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x61\x73\x79\x6E\x63\x20\x6F\x6E\x43\x6C\x69\x63\x6B\x45\x6E\x63\x72\x79\x70\x74\x28\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x2E\x73\x63\x72\x69\x70\x74\x20\x3D\x3D\x20\x22\x22\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x22\x4E\x6F\x20\x66\x69\x6C\x65\x20\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x6F\x6B\x20\x3D\x20\x74\x68\x69\x73\x2E\x63\x6F\x6E\x66\x69\x72\x6D\x57\x68\x65\x6E\x44\x69\x72\x74\x79\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x21\x6F\x6B\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x72\x65\x73\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x70\x61\x74\x68\x32\x20\x3D\x20\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x2E\x73\x63\x72\x69\x70\x74\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x72\x65\x71\x20\x3D\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x74\x68\x3A\x20\x70\x61\x74\x68\x32\x0A\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x68\x74\x74\x70\x52\x65\x73\x20\x3D\x20\x61\x77\x61\x69\x74\x20\x66\x65\x74\x63\x68\x28\x22\x2F\x61\x77\x77\x61\x6E\x2F\x61\x70\x69\x2F\x65\x6E\x63\x72\x79\x70\x74\x22\x2C\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6D\x65\x74\x68\x6F\x64\x3A\x20\x22\x50\x4F\x53\x54\x22\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\x61\x64\x65\x72\x73\x3A\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x41\x63\x63\x65\x70\x74\x3A\x20\x22\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E\x22\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65\x22\x3A\x20\x22\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E\x22\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x62\x6F\x64\x79\x3A\x20\x4A\x53\x4F\x4E\x2E\x73\x74\x72\x69\x6E\x67\x69\x66\x79\x28\x72\x65\x71\x29\x0A\x20\x20\x20\x20\x20\x20\x7D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x6A\x73\x6F\x6E\x52\x65\x73\x20\x3D\x20\x61\x77\x61\x69\x74\x20\x68\x74\x74\x70\x52\x65\x73\x2E\x6A\x73\x6F\x6E\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6A\x73\x6F\x6E\x52\x65\x73\x2E\x63\x6F\x64\x65\x20\x21\x3D\x20\x32\x30\x30\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x60\x46\x61\x69\x6C\x65\x64\x20\x74\x6F\x20\x65\x6E\x63\x72\x79\x70\x74\x20\x66\x69\x6C\x65\x20\x24\x7B\x70\x61\x74\x68\x32\x7D\x3A\x20\x24\x7B\x6A\x73\x6F\x6E\x52\x65\x73\x2E\x6D\x65\x73\x73\x61\x67\x65\x7D\x60\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x6E\x75\x6C\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x65\x6E\x63\x52\x65\x73\x20\x3D\x20\x6A\x73\x6F\x6E\x52\x65\x73\x2E\x64\x61\x74\x61\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x69\x6E\x66\x6F\x28\x60\x46\x69\x6C\x65\x20\x24\x7B\x70\x61\x74\x68\x32\x7D\x20\x68\x61\x73\x20\x62\x65\x65\x6E\x20\x65\x6E\x63\x72\x79\x70\x74\x65\x64\x20\x74\x6F\x20\x24\x7B\x65\x6E\x63\x52\x65\x73\x2E\x70\x61\x74\x68\x5F\x76\x61\x75\x6C\x74\x7D\x2E\x60\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x70\x65\x6E\x28\x74\x68\x69\x73\x2E\x63\x75\x72\x72\x65\x6E\x74\x4E\x6F\x64\x65\x2E\x70\x61\x74\x68\x2C\x20\x74\x68\x69\x73\x2E\x63\x75\x72\x72\x65\x6E\x74\x4E\x6F\x64\x65\x2E\x69\x73\x5F\x64\x69\x72\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x61\x73\x79\x6E\x63\x20\x6F\x6E\x43\x6C\x69\x63\x6B\x44\x65\x63\x72\x79\x70\x74\x28\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x2E\x73\x63\x72\x69\x70\x74\x20\x3D\x3D\x20\x22\x22\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x22\x4E\x6F\x20\x66\x69\x6C\x65\x20\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x66\x61\x6C\x73\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x70\x61\x74\x68\x56\x61\x75\x6C\x74\x20\x3D\x20\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x2E\x73\x63\x72\x69\x70\x74\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x72\x65\x71\x20\x3D\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x74\x68\x5F\x76\x61\x75\x6C\x74\x3A\x20\x70\x61\x74\x68\x56\x61\x75\x6C\x74\x0A\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x68\x74\x74\x70\x52\x65\x73\x20\x3D\x20\x61\x77\x61\x69\x74\x20\x66\x65\x74\x63\x68\x28\x22\x2F\x61\x77\x77\x61\x6E\x2F\x61\x70\x69\x2F\x64\x65\x63\x72\x79\x70\x74\x22\x2C\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6D\x65\x74\x68\x6F\x64\x3A\x20\x22\x50\x4F\x53\x54\x22\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\x61\x64\x65\x72\x73\x3A\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x41\x63\x63\x65\x70\x74\x3A\x20\x22\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E\x22\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65\x22\x3A\x20\x22\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E\x22\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x62\x6F\x64\x79\x3A\x20\x4A\x53\x4F\x4E\x2E\x73\x74\x72\x69\x6E\x67\x69\x66\x79\x28\x72\x65\x71\x29\x0A\x20\x20\x20\x20\x20\x20\x7D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x6A\x73\x6F\x6E\x52\x65\x73\x20\x3D\x20\x61\x77\x61\x69\x74\x20\x68\x74\x74\x70\x52\x65\x73\x2E\x6A\x73\x6F\x6E\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6A\x73\x6F\x6E\x52\x65\x73\x2E\x63\x6F\x64\x65\x20\x21\x3D\x20\x32\x30\x30\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x60\x46\x61\x69\x6C\x65\x64\x20\x74\x6F\x20\x64\x65\x63\x72\x79\x70\x74\x20\x66\x69\x6C\x65\x20\x24\x7B\x70\x61\x74\x68\x7D\x3A\x20\x24\x7B\x6A\x73\x6F\x6E\x52\x65\x73\x2E\x6D\x65\x73\x73\x61\x67\x65\x7D\x60\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x6E\x75\x6C\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x65\x6E\x63\x52\x65\x73\x20\x3D\x20\x6A\x73\x6F\x6E\x52\x65\x73\x2E\x64\x61\x74\x61\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x69\x6E\x66\x6F\x28\x60\x46\x69\x6C\x65\x20\x24\x7B\x70\x61\x74\x68\x56\x61\x75\x6C\x74\x7D\x20\x68\x61\x73\x20\x62\x65\x65\x6E\x20\x64\x65\x63\x72\x79\x70\x74\x65\x64\x20\x74\x6F\x20\x24\x7B\x65\x6E\x63\x52\x65\x73\x2E\x70\x61\x74\x68\x7D\x2E\x60\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x70\x65\x6E\x28\x74\x68\x69\x73\x2E\x63\x75\x72\x72\x65\x6E\x74\x4E\x6F\x64\x65\x2E\x70\x61\x74\x68\x2C\x20\x74\x68\x69\x73\x2E\x63\x75\x72\x72\x65\x6E\x74\x4E\x6F\x64\x65\x2E\x69\x73\x5F\x64\x69\x72\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x6F\x6E\x43\x6C\x69\x63\x6B\x53\x61\x76\x65\x28\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x2E\x73\x63\x72\x69\x70\x74\x20\x3D\x3D\x20\x22\x22\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x6C\x65\x74\x20\x63\x6F\x6E\x74\x65\x6E\x74\x20\x3D\x20\x74\x68\x69\x73\x2E\x65\x64\x69\x74\x6F\x72\x2E\x67\x65\x74\x43\x6F\x6E\x74\x65\x6E\x74\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x6C\x20\x3D\x20\x63\x6F\x6E\x74\x65\x6E\x74\x2E\x6C\x65\x6E\x67\x74\x68\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6C\x20\x3E\x20\x30\x20\x26\x26\x20\x63\x6F\x6E\x74\x65\x6E\x74\x5B\x6C\x20\x2D\x20\x31\x5D\x20\x21\x3D\x20\x22\x5C\x6E\x22\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x74\x65\x6E\x74\x20\x2B\x3D\x20\x22\x5C\x6E\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x2E\x63\x6F\x6E\x74\x65\x6E\x74\x20\x3D\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x64\x6F\x53\x61\x76\x65\x46\x69\x6C\x65\x28\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x2E\x73\x63\x72\x69\x70\x74\x2C\x20\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x2E\x63\x6F\x6E\x74\x65\x6E\x74\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x65\x64\x69\x74\x6F\x72\x4F\x6E\x53\x61\x76\x65\x28\x63\x6F\x6E\x74\x65\x6E\x74\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x64\x6F\x53\x61\x76\x65\x46\x69\x6C\x65\x28\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x2E\x73\x63\x72\x69\x70\x74\x2C\x20\x63\x6F\x6E\x74\x65\x6E\x74\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x61\x73\x79\x6E\x63\x20\x64\x6F\x53\x61\x76\x65\x46\x69\x6C\x65\x28\x70\x61\x74\x68\x32\x2C\x20\x63\x6F\x6E\x74\x65\x6E\x74\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x72\x65\x71\x20\x3D\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x74\x68\x3A\x20\x70\x61\x74\x68\x32\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3A\x20\x62\x74\x6F\x61\x28\x63\x6F\x6E\x74\x65\x6E\x74\x29\x0A\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x68\x74\x74\x70\x52\x65\x73\x20\x3D\x20\x61\x77\x61\x69\x74\x20\x66\x65\x74\x63\x68\x28\x22\x2F\x61\x77\x77\x61\x6E\x2F\x61\x70\x69\x2F\x66\x73\x22\x2C\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6D\x65\x74\x68\x6F\x64\x3A\x20\x22\x50\x55\x54\x22\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\x61\x64\x65\x72\x73\x3A\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x41\x63\x63\x65\x70\x74\x3A\x20\x22\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E\x22\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65\x22\x3A\x20\x22\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E\x22\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x62\x6F\x64\x79\x3A\x20\x4A\x53\x4F\x4E\x2E\x73\x74\x72\x69\x6E\x67\x69\x66\x79\x28\x72\x65\x71\x29\x0A\x20\x20\x20\x20\x20\x20\x7D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x72\x65\x73\x32\x20\x3D\x20\x61\x77\x61\x69\x74\x20\x68\x74\x74\x70\x52\x65\x73\x2E\x6A\x73\x6F\x6E\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x72\x65\x73\x32\x2E\x63\x6F\x64\x65\x20\x21\x3D\x20\x32\x30\x30\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x60\x46\x61\x69\x6C\x65\x64\x20\x74\x6F\x20\x73\x61\x76\x65\x20\x66\x69\x6C\x65\x20\x24\x7B\x70\x61\x74\x68\x32\x7D\x3A\x20\x24\x7B\x72\x65\x73\x32\x2E\x6D\x65\x73\x73\x61\x67\x65\x7D\x60\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x6E\x75\x6C\x6C\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x69\x6E\x66\x6F\x28\x60\x46\x69\x6C\x65\x20\x24\x7B\x70\x61\x74\x68\x32\x7D\x20\x68\x61\x73\x20\x62\x65\x65\x6E\x20\x73\x61\x76\x65\x64\x2E\x60\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x6E\x6F\x64\x65\x20\x3D\x20\x72\x65\x73\x32\x2E\x64\x61\x74\x61\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x65\x64\x69\x74\x6F\x72\x2E\x6F\x70\x65\x6E\x28\x6E\x6F\x64\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6F\x72\x67\x43\x6F\x6E\x74\x65\x6E\x74\x20\x3D\x20\x74\x68\x69\x73\x2E\x65\x64\x69\x74\x6F\x72\x2E\x67\x65\x74\x43\x6F\x6E\x74\x65\x6E\x74\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x72\x65\x73\x32\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x2F\x2F\x20\x65\x78\x65\x63\x4C\x6F\x63\x61\x6C\x20\x72\x65\x71\x75\x65\x73\x74\x20\x74\x6F\x20\x65\x78\x65\x63\x75\x74\x65\x20\x74\x68\x65\x20\x73\x65\x6C\x65\x63\x74\x65\x64\x20\x73\x63\x72\x69\x70\x74\x20\x6F\x6E\x20\x6C\x6F\x63\x61\x6C\x20\x73\x79\x73\x74\x65\x6D\x2E\x0A\x20\x20\x20\x20\x65\x78\x65\x63\x4C\x6F\x63\x61\x6C\x28\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x2E\x73\x63\x72\x69\x70\x74\x20\x3D\x3D\x20\x22\x22\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x60\x45\x78\x65\x63\x75\x74\x65\x20\x6F\x6E\x20\x6C\x6F\x63\x61\x6C\x3A\x20\x6E\x6F\x20\x66\x69\x6C\x65\x20\x73\x65\x6C\x65\x63\x74\x65\x64\x60\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x6C\x69\x6E\x65\x52\x61\x6E\x67\x65\x20\x3D\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x49\x6E\x70\x75\x74\x4C\x69\x6E\x65\x52\x61\x6E\x67\x65\x2E\x76\x61\x6C\x75\x65\x2E\x74\x72\x69\x6D\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6C\x69\x6E\x65\x52\x61\x6E\x67\x65\x20\x3D\x3D\x3D\x20\x22\x22\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x60\x45\x6D\x70\x74\x79\x20\x6C\x69\x6E\x65\x20\x72\x61\x6E\x67\x65\x60\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x68\x74\x74\x70\x41\x70\x69\x45\x78\x65\x63\x75\x74\x65\x28\x22\x6C\x6F\x63\x61\x6C\x22\x2C\x20\x6C\x69\x6E\x65\x52\x61\x6E\x67\x65\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x2F\x2F\x20\x65\x78\x65\x63\x52\x65\x6D\x6F\x74\x65\x20\x72\x65\x71\x75\x65\x73\x74\x20\x74\x6F\x20\x65\x78\x65\x63\x75\x74\x65\x20\x74\x68\x65\x20\x73\x65\x6C\x65\x63\x74\x65\x64\x20\x73\x63\x72\x69\x70\x74\x20\x6F\x6E\x20\x72\x65\x6D\x6F\x74\x65\x20\x73\x79\x73\x74\x65\x6D\x2E\x0A\x20\x20\x20\x20\x65\x78\x65\x63\x52\x65\x6D\x6F\x74\x65\x28\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x2E\x73\x63\x72\x69\x70\x74\x20\x3D\x3D\x20\x22\x22\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x60\x45\x78\x65\x63\x75\x74\x65\x20\x6F\x6E\x20\x72\x65\x6D\x6F\x74\x65\x3A\x20\x6E\x6F\x20\x66\x69\x6C\x65\x20\x73\x65\x6C\x65\x63\x74\x65\x64\x60\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x6C\x69\x6E\x65\x52\x61\x6E\x67\x65\x20\x3D\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x49\x6E\x70\x75\x74\x4C\x69\x6E\x65\x52\x61\x6E\x67\x65\x2E\x76\x61\x6C\x75\x65\x2E\x74\x72\x69\x6D\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6C\x69\x6E\x65\x52\x61\x6E\x67\x65\x20\x3D\x3D\x3D\x20\x22\x22\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x60\x45\x6D\x70\x74\x79\x20\x6C\x69\x6E\x65\x20\x72\x61\x6E\x67\x65\x60\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x68\x74\x74\x70\x41\x70\x69\x45\x78\x65\x63\x75\x74\x65\x28\x22\x72\x65\x6D\x6F\x74\x65\x22\x2C\x20\x6C\x69\x6E\x65\x52\x61\x6E\x67\x65\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x61\x73\x79\x6E\x63\x20\x68\x74\x74\x70\x41\x70\x69\x45\x78\x65\x63\x75\x74\x65\x28\x6D\x6F\x64\x65\x2C\x20\x6C\x69\x6E\x65\x52\x61\x6E\x67\x65\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x4F\x75\x74\x70\x75\x74\x2E\x69\x6E\x6E\x65\x72\x54\x65\x78\x74\x20\x3D\x20\x22\x22\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x2E\x6D\x6F\x64\x65\x20\x3D\x20\x6D\x6F\x64\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x2E\x63\x6F\x6E\x74\x65\x6E\x74\x20\x3D\x20\x62\x74\x6F\x61\x28\x74\x68\x69\x73\x2E\x65\x64\x69\x74\x6F\x72\x2E\x67\x65\x74\x43\x6F\x6E\x74\x65\x6E\x74\x28\x29\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x2E\x6C\x69\x6E\x65\x5F\x72\x61\x6E\x67\x65\x20\x3D\x20\x6C\x69\x6E\x65\x52\x61\x6E\x67\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x68\x74\x74\x70\x52\x65\x73\x20\x3D\x20\x61\x77\x61\x69\x74\x20\x66\x65\x74\x63\x68\x28\x22\x2F\x61\x77\x77\x61\x6E\x2F\x61\x70\x69\x2F\x65\x78\x65\x63\x75\x74\x65\x22\x2C\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6D\x65\x74\x68\x6F\x64\x3A\x20\x22\x50\x4F\x53\x54\x22\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\x61\x64\x65\x72\x73\x3A\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x41\x63\x63\x65\x70\x74\x3A\x20\x22\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E\x22\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65\x22\x3A\x20\x22\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E\x22\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x62\x6F\x64\x79\x3A\x20\x4A\x53\x4F\x4E\x2E\x73\x74\x72\x69\x6E\x67\x69\x66\x79\x28\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x29\x0A\x20\x20\x20\x20\x20\x20\x7D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x72\x65\x73\x32\x20\x3D\x20\x61\x77\x61\x69\x74\x20\x68\x74\x74\x70\x52\x65\x73\x2E\x6A\x73\x6F\x6E\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x72\x65\x73\x32\x2E\x63\x6F\x64\x65\x20\x21\x3D\x20\x32\x30\x30\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x60\x45\x78\x65\x63\x75\x74\x65\x20\x66\x61\x69\x6C\x65\x64\x3A\x20\x24\x7B\x72\x65\x73\x32\x2E\x6D\x65\x73\x73\x61\x67\x65\x7D\x60\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x72\x65\x73\x32\x2E\x64\x61\x74\x61\x2E\x6F\x75\x74\x70\x75\x74\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x4F\x75\x74\x70\x75\x74\x2E\x69\x6E\x6E\x65\x72\x54\x65\x78\x74\x20\x3D\x20\x61\x74\x6F\x62\x28\x72\x65\x73\x32\x2E\x64\x61\x74\x61\x2E\x6F\x75\x74\x70\x75\x74\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x72\x65\x73\x32\x2E\x64\x61\x74\x61\x2E\x65\x72\x72\x6F\x72\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x72\x65\x73\x32\x2E\x64\x61\x74\x61\x2E\x65\x72\x72\x6F\x72\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x20\x65\x6C\x73\x65\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x69\x6E\x66\x6F\x28\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x60\x53\x75\x63\x63\x65\x73\x73\x66\x75\x6C\x6C\x79\x20\x65\x78\x65\x63\x75\x74\x65\x20\x24\x7B\x74\x68\x69\x73\x2E\x72\x65\x71\x75\x65\x73\x74\x2E\x73\x63\x72\x69\x70\x74\x7D\x20\x6F\x6E\x20\x24\x7B\x6D\x6F\x64\x65\x7D\x2E\x60\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x61\x73\x79\x6E\x63\x20\x6E\x65\x77\x4E\x6F\x64\x65\x28\x69\x73\x44\x69\x72\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x21\x74\x68\x69\x73\x2E\x63\x75\x72\x72\x65\x6E\x74\x4E\x6F\x64\x65\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x22\x4E\x6F\x20\x61\x63\x74\x69\x76\x65\x20\x64\x69\x72\x65\x63\x74\x6F\x72\x79\x20\x6C\x6F\x61\x64\x65\x64\x20\x6F\x72\x20\x73\x65\x6C\x65\x63\x74\x65\x64\x2E\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x6E\x61\x6D\x65\x20\x3D\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x56\x66\x73\x49\x6E\x70\x75\x74\x2E\x76\x61\x6C\x75\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6E\x61\x6D\x65\x20\x3D\x3D\x3D\x20\x22\x22\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x22\x45\x6D\x70\x74\x79\x20\x66\x69\x6C\x65\x20\x6E\x61\x6D\x65\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x72\x65\x71\x20\x3D\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x74\x68\x3A\x20\x74\x68\x69\x73\x2E\x63\x75\x72\x72\x65\x6E\x74\x4E\x6F\x64\x65\x2E\x70\x61\x74\x68\x20\x2B\x20\x22\x2F\x22\x20\x2B\x20\x6E\x61\x6D\x65\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6E\x61\x6D\x65\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x69\x73\x5F\x64\x69\x72\x3A\x20\x69\x73\x44\x69\x72\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x74\x65\x6E\x74\x5F\x74\x79\x70\x65\x3A\x20\x22\x22\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6D\x6F\x64\x5F\x74\x69\x6D\x65\x3A\x20\x30\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x73\x69\x7A\x65\x3A\x20\x30\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6D\x6F\x64\x65\x3A\x20\x22\x22\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x68\x69\x6C\x64\x73\x3A\x20\x5B\x5D\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3A\x20\x22\x22\x0A\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x68\x74\x74\x70\x52\x65\x73\x20\x3D\x20\x61\x77\x61\x69\x74\x20\x66\x65\x74\x63\x68\x28\x22\x2F\x61\x77\x77\x61\x6E\x2F\x61\x70\x69\x2F\x66\x73\x22\x2C\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6D\x65\x74\x68\x6F\x64\x3A\x20\x22\x50\x4F\x53\x54\x22\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\x61\x64\x65\x72\x73\x3A\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x41\x63\x63\x65\x70\x74\x3A\x20\x22\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E\x22\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65\x22\x3A\x20\x22\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E\x22\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x62\x6F\x64\x79\x3A\x20\x4A\x53\x4F\x4E\x2E\x73\x74\x72\x69\x6E\x67\x69\x66\x79\x28\x72\x65\x71\x29\x0A\x20\x20\x20\x20\x20\x20\x7D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x72\x65\x73\x32\x20\x3D\x20\x61\x77\x61\x69\x74\x20\x68\x74\x74\x70\x52\x65\x73\x2E\x6A\x73\x6F\x6E\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x72\x65\x73\x32\x2E\x63\x6F\x64\x65\x20\x21\x3D\x20\x32\x30\x30\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x60\x6E\x65\x77\x4E\x6F\x64\x65\x3A\x20\x24\x7B\x72\x65\x73\x32\x2E\x6D\x65\x73\x73\x61\x67\x65\x7D\x60\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x6E\x6F\x64\x65\x20\x3D\x20\x72\x65\x73\x32\x2E\x64\x61\x74\x61\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x21\x74\x68\x69\x73\x2E\x63\x75\x72\x72\x65\x6E\x74\x4E\x6F\x64\x65\x2E\x63\x68\x69\x6C\x64\x73\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x75\x72\x72\x65\x6E\x74\x4E\x6F\x64\x65\x2E\x63\x68\x69\x6C\x64\x73\x20\x3D\x20\x5B\x5D\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x75\x72\x72\x65\x6E\x74\x4E\x6F\x64\x65\x2E\x63\x68\x69\x6C\x64\x73\x2E\x70\x75\x73\x68\x28\x6E\x6F\x64\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x76\x66\x73\x2E\x73\x65\x74\x28\x74\x68\x69\x73\x2E\x63\x75\x72\x72\x65\x6E\x74\x4E\x6F\x64\x65\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x61\x73\x79\x6E\x63\x20\x6F\x6E\x43\x6C\x69\x63\x6B\x52\x65\x6D\x6F\x76\x65\x28\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x6F\x6C\x65\x2E\x6C\x6F\x67\x28\x22\x6F\x6E\x43\x6C\x69\x63\x6B\x52\x65\x6D\x6F\x76\x65\x3A\x20\x22\x2C\x20\x74\x68\x69\x73\x2E\x63\x75\x72\x72\x65\x6E\x74\x4E\x6F\x64\x65\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x21\x74\x68\x69\x73\x2E\x63\x75\x72\x72\x65\x6E\x74\x4E\x6F\x64\x65\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x22\x4E\x6F\x20\x66\x69\x6C\x65\x20\x73\x65\x6C\x65\x63\x74\x65\x64\x2E\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x6E\x61\x6D\x65\x20\x3D\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x56\x66\x73\x49\x6E\x70\x75\x74\x2E\x76\x61\x6C\x75\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x6E\x61\x6D\x65\x20\x3D\x3D\x3D\x20\x22\x22\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x22\x45\x6D\x70\x74\x79\x20\x66\x69\x6C\x65\x20\x6E\x61\x6D\x65\x22\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x72\x65\x71\x20\x3D\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x74\x68\x3A\x20\x74\x68\x69\x73\x2E\x63\x75\x72\x72\x65\x6E\x74\x4E\x6F\x64\x65\x2E\x70\x61\x74\x68\x20\x2B\x20\x22\x2F\x22\x20\x2B\x20\x6E\x61\x6D\x65\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x69\x73\x5F\x64\x69\x72\x3A\x20\x66\x61\x6C\x73\x65\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3A\x20\x22\x22\x0A\x20\x20\x20\x20\x20\x20\x7D\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x68\x74\x74\x70\x52\x65\x73\x20\x3D\x20\x61\x77\x61\x69\x74\x20\x66\x65\x74\x63\x68\x28\x22\x2F\x61\x77\x77\x61\x6E\x2F\x61\x70\x69\x2F\x66\x73\x22\x2C\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x6D\x65\x74\x68\x6F\x64\x3A\x20\x22\x44\x45\x4C\x45\x54\x45\x22\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\x61\x64\x65\x72\x73\x3A\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x41\x63\x63\x65\x70\x74\x3A\x20\x22\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E\x22\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65\x22\x3A\x20\x22\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E\x22\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x7D\x2C\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x62\x6F\x64\x79\x3A\x20\x4A\x53\x4F\x4E\x2E\x73\x74\x72\x69\x6E\x67\x69\x66\x79\x28\x72\x65\x71\x29\x0A\x20\x20\x20\x20\x20\x20\x7D\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x72\x65\x73\x32\x20\x3D\x20\x61\x77\x61\x69\x74\x20\x68\x74\x74\x70\x52\x65\x73\x2E\x6A\x73\x6F\x6E\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x72\x65\x73\x32\x2E\x63\x6F\x64\x65\x20\x21\x3D\x20\x32\x30\x30\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x65\x72\x72\x6F\x72\x28\x60\x72\x65\x6D\x6F\x76\x65\x3A\x20\x24\x7B\x72\x65\x73\x32\x2E\x6D\x65\x73\x73\x61\x67\x65\x7D\x60\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x6E\x6F\x74\x69\x66\x2E\x69\x6E\x66\x6F\x28\x60\x24\x7B\x72\x65\x73\x32\x2E\x6D\x65\x73\x73\x61\x67\x65\x7D\x60\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x76\x66\x73\x2E\x6F\x70\x65\x6E\x44\x69\x72\x28\x74\x68\x69\x73\x2E\x63\x75\x72\x72\x65\x6E\x74\x4E\x6F\x64\x65\x2E\x70\x61\x74\x68\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x2F\x2F\x20\x6F\x6E\x56\x66\x73\x49\x6E\x70\x75\x74\x46\x69\x6C\x74\x65\x72\x20\x66\x69\x6C\x74\x65\x72\x20\x74\x68\x65\x20\x56\x46\x53\x20\x6C\x69\x73\x74\x20\x62\x61\x73\x65\x64\x20\x6F\x6E\x20\x69\x6E\x70\x75\x74\x20\x76\x61\x6C\x2E\x0A\x20\x20\x20\x20\x6F\x6E\x56\x66\x73\x49\x6E\x70\x75\x74\x46\x69\x6C\x74\x65\x72\x28\x76\x61\x6C\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x76\x66\x73\x2E\x66\x69\x6C\x74\x65\x72\x28\x76\x61\x6C\x29\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x64\x6F\x52\x65\x73\x69\x7A\x65\x56\x66\x73\x28\x65\x76\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x65\x76\x2E\x70\x72\x65\x76\x65\x6E\x74\x44\x65\x66\x61\x75\x6C\x74\x28\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\x68\x69\x73\x2E\x5F\x70\x6F\x73\x78\x20\x3D\x3D\x20\x30\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x5F\x70\x6F\x73\x78\x20\x3D\x20\x65\x76\x2E\x63\x6C\x69\x65\x6E\x74\x58\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x66\x61\x6C\x73\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x64\x69\x66\x66\x20\x3D\x20\x74\x68\x69\x73\x2E\x5F\x70\x6F\x73\x78\x20\x2D\x20\x65\x76\x2E\x63\x6C\x69\x65\x6E\x74\x58\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x64\x69\x66\x66\x20\x3E\x20\x30\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x72\x65\x73\x69\x7A\x65\x56\x66\x73\x4C\x65\x66\x74\x28\x64\x69\x66\x66\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x20\x65\x6C\x73\x65\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x72\x65\x73\x69\x7A\x65\x56\x66\x73\x52\x69\x67\x68\x74\x28\x64\x69\x66\x66\x20\x2A\x20\x2D\x31\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x5F\x70\x6F\x73\x78\x20\x3D\x20\x65\x76\x2E\x63\x6C\x69\x65\x6E\x74\x58\x3B\x0A\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x66\x61\x6C\x73\x65\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x72\x65\x73\x69\x7A\x65\x56\x66\x73\x4C\x65\x66\x74\x28\x64\x69\x66\x66\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\x68\x69\x73\x2E\x63\x6F\x6D\x4E\x61\x76\x4C\x65\x66\x74\x2E\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68\x20\x3C\x3D\x20\x33\x30\x30\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x77\x69\x64\x74\x68\x20\x3D\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x4E\x61\x76\x4C\x65\x66\x74\x2E\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68\x20\x2D\x20\x64\x69\x66\x66\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x4E\x61\x76\x4C\x65\x66\x74\x2E\x73\x74\x79\x6C\x65\x2E\x77\x69\x64\x74\x68\x20\x3D\x20\x60\x24\x7B\x77\x69\x64\x74\x68\x7D\x70\x78\x60\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x72\x65\x73\x69\x7A\x65\x56\x66\x73\x52\x69\x67\x68\x74\x28\x64\x69\x66\x66\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\x68\x69\x73\x2E\x63\x6F\x6D\x45\x64\x69\x74\x6F\x72\x4F\x75\x74\x70\x75\x74\x2E\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68\x20\x3C\x3D\x20\x36\x30\x30\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x77\x69\x64\x74\x68\x20\x3D\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x4E\x61\x76\x4C\x65\x66\x74\x2E\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68\x20\x2B\x20\x64\x69\x66\x66\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x4E\x61\x76\x4C\x65\x66\x74\x2E\x73\x74\x79\x6C\x65\x2E\x77\x69\x64\x74\x68\x20\x3D\x20\x60\x24\x7B\x77\x69\x64\x74\x68\x7D\x70\x78\x60\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x64\x6F\x52\x65\x73\x69\x7A\x65\x45\x64\x69\x74\x6F\x72\x28\x65\x76\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\x68\x69\x73\x2E\x5F\x70\x6F\x73\x79\x20\x3D\x3D\x20\x30\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x5F\x70\x6F\x73\x79\x20\x3D\x20\x65\x76\x2E\x63\x6C\x69\x65\x6E\x74\x59\x3B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x74\x72\x75\x65\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x63\x6F\x6E\x73\x74\x20\x64\x69\x66\x66\x20\x3D\x20\x74\x68\x69\x73\x2E\x5F\x70\x6F\x73\x79\x20\x2D\x20\x65\x76\x2E\x63\x6C\x69\x65\x6E\x74\x59\x3B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x64\x69\x66\x66\x20\x3E\x20\x30\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x72\x65\x73\x69\x7A\x65\x55\x70\x28\x64\x69\x66\x66\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x20\x65\x6C\x73\x65\x20\x69\x66\x20\x28\x64\x69\x66\x66\x20\x3C\x20\x30\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x72\x65\x73\x69\x7A\x65\x44\x6F\x77\x6E\x28\x64\x69\x66\x66\x20\x2A\x20\x2D\x31\x29\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x5F\x70\x6F\x73\x79\x20\x3D\x20\x65\x76\x2E\x63\x6C\x69\x65\x6E\x74\x59\x3B\x0A\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x20\x74\x72\x75\x65\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x72\x65\x73\x69\x7A\x65\x55\x70\x28\x64\x69\x66\x66\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\x68\x69\x73\x2E\x63\x6F\x6D\x45\x64\x69\x74\x6F\x72\x2E\x63\x6C\x69\x65\x6E\x74\x48\x65\x69\x67\x68\x74\x20\x3C\x3D\x20\x31\x32\x36\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x45\x64\x69\x74\x6F\x72\x2E\x73\x74\x79\x6C\x65\x2E\x68\x65\x69\x67\x68\x74\x20\x3D\x20\x60\x24\x7B\x74\x68\x69\x73\x2E\x63\x6F\x6D\x45\x64\x69\x74\x6F\x72\x2E\x63\x6C\x69\x65\x6E\x74\x48\x65\x69\x67\x68\x74\x20\x2D\x20\x64\x69\x66\x66\x7D\x70\x78\x60\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x4F\x75\x74\x70\x75\x74\x57\x72\x61\x70\x70\x65\x72\x2E\x73\x74\x79\x6C\x65\x2E\x68\x65\x69\x67\x68\x74\x20\x3D\x20\x60\x24\x7B\x74\x68\x69\x73\x2E\x63\x6F\x6D\x4F\x75\x74\x70\x75\x74\x57\x72\x61\x70\x70\x65\x72\x2E\x63\x6C\x69\x65\x6E\x74\x48\x65\x69\x67\x68\x74\x20\x2B\x20\x64\x69\x66\x66\x7D\x70\x78\x60\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x72\x65\x73\x69\x7A\x65\x44\x6F\x77\x6E\x28\x64\x69\x66\x66\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\x68\x69\x73\x2E\x63\x6F\x6D\x4F\x75\x74\x70\x75\x74\x57\x72\x61\x70\x70\x65\x72\x2E\x63\x6C\x69\x65\x6E\x74\x48\x65\x69\x67\x68\x74\x20\x3C\x3D\x20\x31\x32\x36\x29\x20\x7B\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6E\x3B\x0A\x20\x20\x20\x20\x20\x20\x7D\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x45\x64\x69\x74\x6F\x72\x2E\x73\x74\x79\x6C\x65\x2E\x68\x65\x69\x67\x68\x74\x20\x3D\x20\x60\x24\x7B\x74\x68\x69\x73\x2E\x63\x6F\x6D\x45\x64\x69\x74\x6F\x72\x2E\x63\x6C\x69\x65\x6E\x74\x48\x65\x69\x67\x68\x74\x20\x2B\x20\x64\x69\x66\x66\x7D\x70\x78\x60\x3B\x0A\x20\x20\x20\x20\x20\x20\x74\x68\x69\x73\x2E\x63\x6F\x6D\x4F\x75\x74\x70\x75\x74\x57\x72\x61\x70\x70\x65\x72\x2E\x73\x74\x79\x6C\x65\x2E\x68\x65\x69\x67\x68\x74\x20\x3D\x20\x60\x24\x7B\x74\x68\x69\x73\x2E\x63\x6F\x6D\x4F\x75\x74\x70\x75\x74\x57\x72\x61\x70\x70\x65\x72\x2E\x63\x6C\x69\x65\x6E\x74\x48\x65\x69\x67\x68\x74\x20\x2D\x20\x64\x69\x66\x66\x7D\x70\x78\x60\x3B\x0A\x20\x20\x20\x20\x7D\x0A\x20\x20\x7D\x3B\x0A\x0A\x20\x20\x2F\x2F\x20\x5F\x77\x75\x69\x2F\x6D\x61\x69\x6E\x2E\x74\x73\x0A\x20\x20\x72\x65\x6E\x64\x65\x72\x48\x74\x6D\x6C\x28\x29\x3B\x0A\x20\x20\x76\x61\x72\x20\x61\x77\x77\x61\x6E\x20\x3D\x20\x6E\x65\x77\x20\x41\x77\x77\x61\x6E\x28\x29\x3B\x0A\x20\x20\x61\x77\x77\x61\x6E\x2E\x6F\x6E\x48\x61\x73\x68\x43\x68\x61\x6E\x67\x65\x28\x77\x69\x6E\x64\x6F\x77\x2E\x6C\x6F\x63\x61\x74\x69\x6F\x6E\x2E\x68\x61\x73\x68\x29\x3B\x0A\x7D\x29\x28\x29\x3B\x0A"),
}
node.SetMode(420)
- node.SetModTimeUnix(1700243971, 205503454)
+ node.SetModTimeUnix(1700243999, 138980885)
node.SetName("main.js")
node.SetSize(31629)
return node
diff --git a/testdata/http_server/fsget/.ssh b/testdata/http_server/fsget/.ssh
new file mode 120000
index 0000000..3a90f72
--- /dev/null
+++ b/testdata/http_server/fsget/.ssh
@@ -0,0 +1 @@
+../../encrypt-with-passfile/.ssh \ No newline at end of file
diff --git a/testdata/http_server/fsget/myhost/plain.txt b/testdata/http_server/fsget/myhost/plain.txt
new file mode 100644
index 0000000..4d50a3a
--- /dev/null
+++ b/testdata/http_server/fsget/myhost/plain.txt
@@ -0,0 +1 @@
+content of plain text
diff --git a/testdata/http_server/fsget_test.data b/testdata/http_server/fsget_test.data
new file mode 100644
index 0000000..34b322f
--- /dev/null
+++ b/testdata/http_server/fsget_test.data
@@ -0,0 +1,19 @@
+Test on FSGet method.
+
+<<< getSshAwwanKey
+{
+ "message": "Forbidden",
+ "code": 403
+}
+
+<<< getSshAwwanPass
+{
+ "message": "Forbidden",
+ "code": 403
+}
+
+<<< getSshAwwanKeyIndirectly
+{
+ "message": "\"/myhost/../.ssh/awwan.key\" not found",
+ "code": 404
+}