1 | // koffee 1.14.0
|
2 |
|
3 | /*
|
4 | 00 00 0000000 000 000 000
|
5 | 000 000 000 000 000 0000 000
|
6 | 000000000 000000000 000 000 0 000
|
7 | 000 0 000 000 000 000 000 0000
|
8 | 000 000 000 000 000 000 000
|
9 | */
|
10 | var app, args, childp, createWindow, electron, highlight, klog, kolor, konrad, konradSend, konradUdp, konradVersion, kstr, noon, p, pkg, post, prefs, quit, ref, setRootDir, slash, startKonrad, udp,
|
11 | slice = [].slice,
|
12 | indexOf = [].indexOf;
|
13 |
|
14 | ref = require('kxk'), app = ref.app, args = ref.args, childp = ref.childp, klog = ref.klog, kolor = ref.kolor, kstr = ref.kstr, noon = ref.noon, post = ref.post, prefs = ref.prefs, slash = ref.slash, udp = ref.udp;
|
15 |
|
16 | pkg = require('../package.json');
|
17 |
|
18 | electron = require('electron');
|
19 |
|
20 | app = new app({
|
21 | dir: __dirname,
|
22 | pkg: pkg,
|
23 | shortcut: 'CmdOrCtrl+F2',
|
24 | index: 'index.html',
|
25 | icon: '../img/app.ico',
|
26 | tray: '../img/menu@2x.png',
|
27 | about: '../img/about.png',
|
28 | onQuit: function() {
|
29 | return quit();
|
30 | },
|
31 | width: 400,
|
32 | height: 400,
|
33 | minWidth: 300,
|
34 | minHeight: 200,
|
35 | args: "show open window on startup true\nprefs show preferences false"
|
36 | });
|
37 |
|
38 | konrad = null;
|
39 |
|
40 | konradVersion = null;
|
41 |
|
42 | konradUdp = new udp({
|
43 | port: 9559
|
44 | });
|
45 |
|
46 | konradSend = function() {
|
47 | var args, msg, s;
|
48 | msg = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];
|
49 | s = [msg + ':'].concat(args).join(' ');
|
50 | return konradUdp.send(s);
|
51 | };
|
52 |
|
53 | if (args.verbose) {
|
54 | klog(kolor.white.bold("\n" + pkg.name, kolor.gray("v" + pkg.version + "\n")));
|
55 | klog(kolor.yellow.bold('process'));
|
56 | p = {
|
57 | cwd: process.cwd()
|
58 | };
|
59 | klog(noon.stringify(p, {
|
60 | colors: true
|
61 | }));
|
62 | klog(kolor.yellow.bold('args'));
|
63 | klog(noon.stringify(args, {
|
64 | colors: true
|
65 | }));
|
66 | klog('');
|
67 | }
|
68 |
|
69 | if (args.prefs) {
|
70 | klog(kolor.yellow.bold('prefs'));
|
71 | klog(kolor.green.bold(prefs.store.file));
|
72 | if (slash.fileExists(prefs.store.file)) {
|
73 | klog(noon.stringify(noon.load(prefs.store.file), {
|
74 | colors: true
|
75 | }));
|
76 | }
|
77 | }
|
78 |
|
79 | post.on('Restart konrad', function() {
|
80 | return startKonrad(prefs.get('rootDir'));
|
81 | });
|
82 |
|
83 | startKonrad = function(rootDir) {
|
84 | var path, treekill;
|
85 | prefs.set('rootDir', rootDir);
|
86 | if (konrad != null) {
|
87 | klog('killing konrad', konrad.pid);
|
88 | treekill = require('tree-kill');
|
89 | treekill(konrad.pid);
|
90 | }
|
91 | path = slash.resolve(__dirname + "/../js/konrad.js");
|
92 | if (indexOf.call(process.env.PATH.split(':'), '/usr/local/bin') < 0) {
|
93 | process.env.PATH = process.env.PATH + ':/usr/local/bin';
|
94 | }
|
95 | konrad = childp.spawn('node', ['--trace-warnings', path, '-w', '-v'], {
|
96 | cwd: rootDir,
|
97 | shell: true,
|
98 | env: process.env,
|
99 | detached: false
|
100 | });
|
101 | konrad.on('exit', function(code, signal) {
|
102 | klog('konrad.on exit', code, signal);
|
103 | return konradSend('exit');
|
104 | });
|
105 | konrad.on('close', function(code, signal) {
|
106 | post.toWins('konradExit', "konrad exit code: " + code);
|
107 | return konradSend('exit');
|
108 | });
|
109 | konrad.stderr.on('data', function(data) {
|
110 | var s;
|
111 | klog(data.toString());
|
112 | s = kstr.stripAnsi(data.toString());
|
113 | konradSend('error', s);
|
114 | if (app.win != null) {
|
115 | return post.toWins('konradError', "konrad error: " + s, kstr.ansi2html(data.toString()));
|
116 | } else {
|
117 | return createWindow('konradError', "konrad error: " + s, kstr.ansi2html(data.toString()));
|
118 | }
|
119 | });
|
120 | return konrad.stdout.on('data', function(data) {
|
121 | var s;
|
122 | s = kstr.stripAnsi(data.toString());
|
123 | if (/\ 👁\ \ /.test(s)) {
|
124 | konradVersion = s.split('👁 ')[1];
|
125 | post.toWins('konradVersion', konradVersion);
|
126 | return konradSend('version', konradVersion);
|
127 | } else if (app.win != null) {
|
128 | post.toWins('konradOutput', s, kstr.ansi2html(data.toString()));
|
129 | if (/ 😡 /.test(s)) {
|
130 | konradSend('error', s);
|
131 | app.win.show();
|
132 | return app.win.focus();
|
133 | } else {
|
134 | return konradSend('output', s);
|
135 | }
|
136 | } else {
|
137 | if (/ 😡 /.test(s)) {
|
138 | konradSend('error', s);
|
139 | return createWindow('konradError', s, kstr.ansi2html(data.toString()));
|
140 | } else {
|
141 | konradSend('output', s);
|
142 | return highlight();
|
143 | }
|
144 | }
|
145 | });
|
146 | };
|
147 |
|
148 | createWindow = function(msg, s, h) {
|
149 | return app.createWindow(function(win) {
|
150 | klog('winReadyToShow', win.id, msg);
|
151 | return post.toWin(win.id, msg, s, h);
|
152 | });
|
153 | };
|
154 |
|
155 | quit = function() {
|
156 | var treekill;
|
157 | if (konrad != null) {
|
158 | klog('killing konrad', konrad != null ? konrad.pid : void 0);
|
159 | treekill = require('tree-kill');
|
160 | treekill(konrad.pid, function() {
|
161 | return app.exitApp();
|
162 | });
|
163 | konrad = null;
|
164 | return 'delay';
|
165 | }
|
166 | };
|
167 |
|
168 | post.on('Restart', function() {
|
169 | var treekill;
|
170 | klog('on Restart', konrad.pid);
|
171 | treekill = require('tree-kill');
|
172 | return treekill(konrad.pid, function() {
|
173 | klog('spawn', process.argv[0], process.argv.slice(1));
|
174 | childp.spawn(process.argv[0], process.argv.slice(1), {
|
175 | cwd: process.cwd(),
|
176 | encoding: 'utf8',
|
177 | detached: true,
|
178 | shell: true,
|
179 | windowsHide: true
|
180 | });
|
181 | return process.exit(0);
|
182 | });
|
183 | });
|
184 |
|
185 | setRootDir = function() {
|
186 | var opts;
|
187 | opts = {
|
188 | title: 'Open',
|
189 | properties: ['openDirectory']
|
190 | };
|
191 | return electron.dialog.showOpenDialog(opts).then((function(_this) {
|
192 | return function(result) {
|
193 | if (!result.canceled && valid(result.filePaths)) {
|
194 | return startKonrad(result.filePaths[0]);
|
195 | }
|
196 | };
|
197 | })(this));
|
198 | };
|
199 |
|
200 | post.on('setRootDir', setRootDir);
|
201 |
|
202 | post.on('appReady', function() {
|
203 | var rootDir;
|
204 | if (rootDir = prefs.get('rootDir')) {
|
205 | return startKonrad(rootDir);
|
206 | } else {
|
207 | return setRootDir();
|
208 | }
|
209 | });
|
210 |
|
211 | post.on('winReady', function(wID) {
|
212 | if (konradVersion) {
|
213 | return post.toWin(wID, 'konradVersion', konradVersion);
|
214 | }
|
215 | });
|
216 |
|
217 | highlight = function() {
|
218 | var base, unhighlight;
|
219 | if (app.tray == null) {
|
220 | return;
|
221 | }
|
222 | if (slash.win()) {
|
223 | app.tray.setImage(slash.resolve(slash.join(__dirname, '../img/menu.png')));
|
224 | unhighlight = function() {
|
225 | return app.tray.setImage(slash.resolve(slash.join(__dirname, '../img/menu@2x.png')));
|
226 | };
|
227 | return setTimeout(unhighlight, 1000);
|
228 | } else {
|
229 | if (typeof (base = app.tray).setHighlightMode === "function") {
|
230 | base.setHighlightMode('always');
|
231 | }
|
232 | unhighlight = function() {
|
233 | var base1;
|
234 | return typeof (base1 = app.tray).setHighlightMode === "function" ? base1.setHighlightMode('never') : void 0;
|
235 | };
|
236 | return setTimeout(unhighlight, 1000);
|
237 | }
|
238 | };
|
239 |
|
240 | post.on('highlight', highlight);
|
241 |
|
242 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIuLi9jb2ZmZWUiLCJzb3VyY2VzIjpbIm1haW4uY29mZmVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7Ozs7QUFBQSxJQUFBLGdNQUFBO0lBQUE7OztBQVFBLE1BQTBFLE9BQUEsQ0FBUSxLQUFSLENBQTFFLEVBQUUsYUFBRixFQUFPLGVBQVAsRUFBYSxtQkFBYixFQUFxQixlQUFyQixFQUEyQixpQkFBM0IsRUFBa0MsZUFBbEMsRUFBd0MsZUFBeEMsRUFBOEMsZUFBOUMsRUFBb0QsaUJBQXBELEVBQTJELGlCQUEzRCxFQUFrRTs7QUFFbEUsR0FBQSxHQUFXLE9BQUEsQ0FBUSxpQkFBUjs7QUFDWCxRQUFBLEdBQVcsT0FBQSxDQUFRLFVBQVI7O0FBRVgsR0FBQSxHQUFNLElBQUksR0FBSixDQUNGO0lBQUEsR0FBQSxFQUFZLFNBQVo7SUFDQSxHQUFBLEVBQVksR0FEWjtJQUVBLFFBQUEsRUFBWSxjQUZaO0lBR0EsS0FBQSxFQUFZLFlBSFo7SUFJQSxJQUFBLEVBQVksZ0JBSlo7SUFLQSxJQUFBLEVBQVksb0JBTFo7SUFNQSxLQUFBLEVBQVksa0JBTlo7SUFPQSxNQUFBLEVBQVksU0FBQTtlQUFHLElBQUEsQ0FBQTtJQUFILENBUFo7SUFRQSxLQUFBLEVBQVksR0FSWjtJQVNBLE1BQUEsRUFBWSxHQVRaO0lBVUEsUUFBQSxFQUFZLEdBVlo7SUFXQSxTQUFBLEVBQVksR0FYWjtJQVlBLElBQUEsRUFBTSxpRkFaTjtDQURFOztBQWtCTixNQUFBLEdBQWlCOztBQUNqQixhQUFBLEdBQWlCOztBQUVqQixTQUFBLEdBQVksSUFBSSxHQUFKLENBQVE7SUFBQSxJQUFBLEVBQUssSUFBTDtDQUFSOztBQUNaLFVBQUEsR0FBYSxTQUFBO0FBQ1QsUUFBQTtJQURVLG9CQUFLO0lBQ2YsQ0FBQSxHQUFJLENBQUMsR0FBQSxHQUFJLEdBQUwsQ0FBUyxDQUFDLE1BQVYsQ0FBaUIsSUFBakIsQ0FBc0IsQ0FBQyxJQUF2QixD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QUEsR0FBYyxTQUFBO0FBQUcsZ0JBQUE7b0ZBQVEsQ0FBQyxpQkFBa0I7UUFBOUI7ZUFDZCxVQUFBLENBQVcsV0FBWCxFQUF3QixJQUF4QixFQVJKOztBQUpROztBQWNaLElBQUksQ0FBQyxFQUFMLENBQVEsV0FBUixFQUFvQixTQUFwQiIsInNvdXJjZXNDb250ZW50IjpbIiMjI1xuMDAgICAgIDAwICAgMDAwMDAwMCAgIDAwMCAgMDAwICAgMDAwXG4wMDAgICAwMDAgIDAwMCAgIDAwMCAgMDAwICAwMDAwICAwMDBcbjAwMDAwMDAwMCAgMDAwMDAwMDAwICAwMDAgIDAwMCAwIDAwMFxuMDAwIDAgMDAwICAwMDAgICAwMDAgIDAwMCAgMDAwICAwMDAwXG4wMDAgICAwMDAgIDAwMCAgIDAwMCAgMDAwICAwMDAgICAwMDBcbiMjI1xuXG57IGFwcCwgYXJncywgY2hpbGRwLCBrbG9nLCBrb2xvciwga3N0ciwgbm9vbiwgcG9zdCwgcHJlZnMsIHNsYXNoLCB1ZHAgfSA9IHJlcXVpcmUgJ2t4aydcblxucGtnICAgICAgPSByZXF1aXJlICcuLi9wYWNrYWdlLmpzb24nXG5lbGVjdHJvbiA9IHJlcXVpcmUgJ2VsZWN0cm9uJ1xuXG5hcHAgPSBuZXcgYXBwXG4gICAgZGlyOiAgICAgICAgX19kaXJuYW1lXG4gICAgcGtnOiAgICAgICAgcGtnXG4gICAgc2hvcnRjdXQ6ICAgJ0NtZE9yQ3RybCtGMidcbiAgICBpbmRleDogICAgICAnaW5kZXguaHRtbCdcbiAgICBpY29uOiAgICAgICAnLi4vaW1nL2FwcC5pY28nXG4gICAgdHJheTogICAgICAgJy4uL2ltZy9tZW51QDJ4LnBuZydcbiAgICBhYm91dDogICAgICAnLi4vaW1nL2Fib3V0LnBuZydcbiAgICBvblF1aXQ6ICAgICAtPiBxdWl0KClcbiAgICB3aWR0aDogICAgICA0MDBcbiAgICBoZWlnaHQ6ICAgICA0MDBcbiAgICBtaW5XaWR0aDogICAzMDBcbiAgICBtaW5IZWlnaHQ6ICAyMDBcbiAgICBhcmdzOiBcIlwiXCJcbiAgICAgICAgc2hvdyAgICAgIG9wZW4gd2luZG93IG9uIHN0YXJ0dXAgIHRydWVcbiAgICAgICAgcHJlZnMgICAgIHNob3cgcHJlZmVyZW5jZXMgICAgICAgIGZhbHNlXG4gICAgICAgIFwiXCJcIlxuXG5rb25yYWQgICAgICAgICA9IG51bGxcbmtvbnJhZFZlcnNpb24gID0gbnVsbFxuXG5rb25yYWRVZHAgPSBuZXcgdWRwIHBvcnQ6OTU1OVxua29ucmFkU2VuZCA9IChtc2csIGFyZ3MuLi4pIC0+IFxuICAgIHMgPSBbbXNnKyc6J10uY29uY2F0KGFyZ3MpLmpvaW4gJyAnXG4gICAgIyBrbG9nICdrb25yYWRTZW5kJyBzXG4gICAga29ucmFkVWRwLnNlbmQgc1xuXG5pZiBhcmdzLnZlcmJvc2VcbiAgICBcbiAgICBrbG9nIGtvbG9yLndoaXRlLmJvbGQgXCJcXG4je3BrZy5uYW1lfVwiLCBrb2xvci5ncmF5IFwidiN7cGtnLnZlcnNpb259XFxuXCJcbiAgICBrbG9nIGtvbG9yLnllbGxvdy5ib2xkICdwcm9jZXNzJ1xuICAgIHAgPSBjd2Q6IHByb2Nlc3MuY3dkKClcbiAgICBrbG9nIG5vb24uc3RyaW5naWZ5IHAsIGNvbG9yczp0cnVlXG4gICAga2xvZyBrb2xvci55ZWxsb3cuYm9sZCAnYXJncydcbiAgICBrbG9nIG5vb24uc3RyaW5naWZ5IGFyZ3MsIGNvbG9yczp0cnVlXG4gICAga2xvZyAnJ1xuXG5pZiBhcmdzLnByZWZzXG4gICAgXG4gICAga2xvZyBrb2xvci55ZWxsb3cuYm9sZCAncHJlZnMnXG4gICAga2xvZyBrb2xvci5ncmVlbi5ib2xkIHByZWZzLnN0b3JlLmZpbGVcbiAgICBpZiBzbGFzaC5maWxlRXhpc3RzIHByZWZzLnN0b3JlLmZpbGVcbiAgICAgICAga2xvZyBub29uLnN0cmluZ2lmeSBub29uLmxvYWQocHJlZnMuc3RvcmUuZmlsZSksIGNvbG9yczp0cnVlXG5cbiMgMDAwICAgMDAwICAgMDAwMDAwMCAgIDAwMCAgIDAwMCAgMDAwMDAwMDAgICAgMDAwMDAwMCAgIDAwMDAwMDBcbiMgMDAwICAwMDAgICAwMDAgICAwMDAgIDAwMDAgIDAwMCAgMDAwICAgMDAwICAwMDAgICAwMDAgIDAwMCAgIDAwMFxuIyAwMDAwMDAwICAgIDAwMCAgIDAwMCAgMDAwIDAgMDAwICAwMDAwMDAwICAgIDAwMDAwMDAwMCAgMDAwICAgMDAwXG4jIDAwMCAgMDAwICAgMDAwICAgMDAwICAwMDAgIDAwMDAgIDAwMCAgIDAwMCAgMDAwICAgMDAwICAwMDAgICAwMDBcbiMgMDAwICAgMDAwICAgMDAwMDAwMCAgIDAwMCAgIDAwMCAgMDAwICAgMDAwICAwMDAgICAwMDAgIDAwMDAwMDBcblxucG9zdC5vbiAnUmVzdGFydCBrb25yYWQnIC0+IHN0YXJ0S29ucmFkIHByZWZzLmdldCAncm9vdERpcidcblxuc3RhcnRLb25yYWQgPSAocm9vdERpcikgLT5cbiAgICBcbiAgICBwcmVmcy5zZXQgJ3Jvb3REaXInIHJvb3REaXJcblxuICAgIGlmIGtvbnJhZD9cbiAgICAgICAga2xvZyAna2lsbGluZyBrb25yYWQnIGtvbnJhZC5waWRcbiAgICAgICAgdHJlZWtpbGwgPSByZXF1aXJlICd0cmVlLWtpbGwnXG4gICAgICAgIHRyZWVraWxsIGtvbnJhZC5waWRcblxuICAgIHBhdGggPSBzbGFzaC5yZXNvbHZlIFwiI3tfX2Rpcm5hbWV9Ly4uL2pzL2tvbnJhZC5qc1wiXG4gICAgXG4gICAgaWYgJy91c3IvbG9jYWwvYmluJyBub3QgaW4gcHJvY2Vzcy5lbnYuUEFUSC5zcGxpdCAnOidcbiAgICAgICAgcHJvY2Vzcy5lbnYuUEFUSCA9IHByb2Nlc3MuZW52LlBBVEggKyAnOi91c3IvbG9jYWwvYmluJ1xuICAgIFxuICAgIGtvbnJhZCA9IGNoaWxkcC5zcGF3biAnbm9kZScgWyctLXRyYWNlLXdhcm5pbmdzJyBwYXRoLCAnLXcnICctdiddLFxuICAgICAgICBjd2Q6ICAgICAgcm9vdERpclxuICAgICAgICBzaGVsbDogICAgdHJ1ZVxuICAgICAgICBlbnY6ICAgICAgcHJvY2Vzcy5lbnZcbiAgICAgICAgZGV0YWNoZWQ6IGZhbHNlXG4gICAgICAgIFxuICAgIGtvbnJhZC5vbiAnZXhpdCcgKGNvZGUsIHNpZ25hbCkgLT4gXG4gICAgICAgIFxuICAgICAgICBrbG9nICdrb25yYWQub24gZXhpdCcgY29kZSwgc2lnbmFsXG4gICAgICAgIGtvbnJhZFNlbmQgJ2V4aXQnXG5cbiAgICBrb25yYWQub24gJ2Nsb3NlJyAoY29kZSwgc2lnbmFsKSAtPlxuICAgICAgICBcbiAgICAgICAgcG9zdC50b1dpbnMgJ2tvbnJhZEV4aXQnIFwia29ucmFkIGV4aXQgY29kZTogI3tjb2RlfVwiXG4gICAgICAgIGtvbnJhZFNlbmQgJ2V4aXQnXG5cbiAgICBrb25yYWQuc3RkZXJyLm9uICdkYXRhJyAoZGF0YSkgLT5cbiAgICAgICAgXG4gICAgICAgIGtsb2cgZGF0YS50b1N0cmluZygpXG4gICAgICAgIHMgPSBrc3RyLnN0cmlwQW5zaSBkYXRhLnRvU3RyaW5nKClcbiAgICAgICAga29ucmFkU2VuZCAnZXJyb3InIHNcbiAgICAgICAgaWYgYXBwLndpbj9cbiAgICAgICAgICAgIHBvc3QudG9XaW5zICdrb25yYWRFcnJvcicgXCJrb25yYWQgZXJyb3I6ICN7c31cIiBrc3RyLmFuc2kyaHRtbCBkYXRhLnRvU3RyaW5nKClcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgY3JlYXRlV2luZG93ICdrb25yYWRFcnJvcicgXCJrb25yYWQgZXJyb3I6ICN7c31cIiBrc3RyLmFuc2kyaHRtbCBkYXRhLnRvU3RyaW5nKClcblxuICAgIGtvbnJhZC5zdGRvdXQub24gJ2RhdGEnIChkYXRhKSAtPlxuICAgICAgICBcbiAgICAgICAgcyA9IGtzdHIuc3RyaXBBbnNpIGRhdGEudG9TdHJpbmcoKVxuICAgICAgICBcbiAgICAgICAgaWYgL1xcIPCfkYFcXCBcXCAvLnRlc3Qgc1xuICAgICAgICAgICAga29ucmFkVmVyc2lvbiA9IHMuc3BsaXQoJ/CfkYEgICcpWzFdXG4gICAgICAgICAgICBwb3N0LnRvV2lucyAna29ucmFkVmVyc2lvbicga29ucmFkVmVyc2lvblxuICAgICAgICAgICAga29ucmFkU2VuZCAndmVyc2lvbicga29ucmFkVmVyc2lvblxuICAgICAgICBlbHNlIGlmIGFwcC53aW4/XG4gICAgICAgICAgICBwb3N0LnRvV2lucyAna29ucmFkT3V0cHV0JyBzLCBrc3RyLmFuc2kyaHRtbCBkYXRhLnRvU3RyaW5nKClcbiAgICAgICAgICAgIGlmIC8g8J+YoSAvLnRlc3Qgc1xuICAgICAgICAgICAgICAgIGtvbnJhZFNlbmQgJ2Vycm9yJyBzXG4gICAgICAgICAgICAgICAgYXBwLndpbi5zaG93KClcbiAgICAgICAgICAgICAgICBhcHAud2luLmZvY3VzKClcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBrb25yYWRTZW5kICdvdXRwdXQnIHNcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgLyDwn5ihIC8udGVzdCBzXG4gICAgICAgICAgICAgICAga29ucmFkU2VuZCAnZXJyb3InIHNcbiAgICAgICAgICAgICAgICBjcmVhdGVXaW5kb3cgJ2tvbnJhZEVycm9yJyBzLCBrc3RyLmFuc2kyaHRtbCBkYXRhLnRvU3RyaW5nKClcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBrb25yYWRTZW5kICdvdXRwdXQnIHNcbiAgICAgICAgICAgICAgICBoaWdobGlnaHQoKVxuXG5jcmVhdGVXaW5kb3cgPSAobXNnLCBzLCBoKSAtPlxuICAgIFxuICAgIGFwcC5jcmVhdGVXaW5kb3cgKHdpbikgLT5cbiAgICAgICAga2xvZyAnd2luUmVhZHlUb1Nob3cnIHdpbi5pZCwgbXNnICMsIHMsIGhcbiAgICAgICAgcG9zdC50b1dpbiB3aW4uaWQsIG1zZywgcywgaFxuICAgICAgICAgICAgICAgIFxuIyAgMDAwMDAwMCAgIDAwMCAgIDAwMCAgMDAwICAwMDAwMDAwMDAgIFxuIyAwMDAgICAwMDAgIDAwMCAgIDAwMCAgMDAwICAgICAwMDAgICAgIFxuIyAwMDAgMDAgMDAgIDAwMCAgIDAwMCAgMDAwICAgICAwMDAgICAgIFxuIyAwMDAgMDAwMCAgIDAwMCAgIDAwMCAgMDAwICAgICAwMDAgICAgIFxuIyAgMDAwMDAgMDAgICAwMDAwMDAwICAgMDAwICAgICAwMDAgICAgIFxuXG5xdWl0ID0gLT5cblxuICAgIGlmIGtvbnJhZD9cbiAgICAgICAga2xvZyAna2lsbGluZyBrb25yYWQnIGtvbnJhZD8ucGlkXG4gICAgICAgIHRyZWVraWxsID0gcmVxdWlyZSAndHJlZS1raWxsJ1xuICAgICAgICB0cmVla2lsbCBrb25yYWQucGlkLCAtPiBhcHAuZXhpdEFwcCgpXG4gICAgICAgIGtvbnJhZCA9IG51bGxcbiAgICAgICAgJ2RlbGF5J1xuICAgICAgICBcbnBvc3Qub24gJ1Jlc3RhcnQnIC0+XG4gICAgXG4gICAga2xvZyAnb24gUmVzdGFydCcga29ucmFkLnBpZFxuXG4gICAgdHJlZWtpbGwgPSByZXF1aXJlICd0cmVlLWtpbGwnXG4gICAgdHJlZWtpbGwga29ucmFkLnBpZCwgLT4gXG4gICAgXG4gICAgICAgIGtsb2cgJ3NwYXduJyBwcm9jZXNzLmFyZ3ZbMF0sIHByb2Nlc3MuYXJndi5zbGljZSgxKVxuICAgICAgICBjaGlsZHAuc3Bhd24gcHJvY2Vzcy5hcmd2WzBdLCBwcm9jZXNzLmFyZ3Yuc2xpY2UoMSksXG4gICAgICAgICAgICBjd2Q6ICAgICAgICAgcHJvY2Vzcy5jd2QoKVxuICAgICAgICAgICAgZW5jb2Rpbmc6ICAgICd1dGY4J1xuICAgICAgICAgICAgZGV0YWNoZWQ6ICAgIHRydWVcbiAgICAgICAgICAgIHNoZWxsOiAgICAgICB0cnVlXG4gICAgICAgICAgICB3aW5kb3dzSGlkZTogdHJ1ZVxuICAgICAgICBwcm9jZXNzLmV4aXQgMFxuICAgICAgICBcbiMgIDAwMDAwMDAgIDAwMDAwMDAwICAwMDAwMDAwMDAgICAgICAgIDAwMDAwMDAwICAgIDAwMDAwMDAgICAgMDAwMDAwMCAgIDAwMDAwMDAwMCAgXG4jIDAwMCAgICAgICAwMDAgICAgICAgICAgMDAwICAgICAgICAgICAwMDAgICAwMDAgIDAwMCAgIDAwMCAgMDAwICAgMDAwICAgICAwMDAgICAgIFxuIyAwMDAwMDAwICAgMDAwMDAwMCAgICAgIDAwMCAgICAgICAgICAgMDAwMDAwMCAgICAwMDAgICAwMDAgIDAwMCAgIDAwMCAgICAgMDAwICAgICBcbiMgICAgICAwMDAgIDAwMCAgICAgICAgICAwMDAgICAgICAgICAgIDAwMCAgIDAwMCAgMDAwICAgMDAwICAwMDAgICAwMDAgICAgIDAwMCAgICAgXG4jIDAwMDAwMDAgICAwMDAwMDAwMCAgICAgMDAwICAgICAgICAgICAwMDAgICAwMDAgICAwMDAwMDAwICAgIDAwMDAwMDAgICAgICAwMDAgICAgIFxuXG5zZXRSb290RGlyID0gLT5cblxuICAgIG9wdHMgPVxuICAgICAgICB0aXRsZTogICAgICAnT3BlbidcbiAgICAgICAgcHJvcGVydGllczogWydvcGVuRGlyZWN0b3J5J11cblxuICAgIGVsZWN0cm9uLmRpYWxvZy5zaG93T3BlbkRpYWxvZyhvcHRzKS50aGVuIChyZXN1bHQpID0+XG4gICAgICAgIGlmIG5vdCByZXN1bHQuY2FuY2VsZWQgYW5kIHZhbGlkIHJlc3VsdC5maWxlUGF0aHNcbiAgICAgICAgICAgIHN0YXJ0S29ucmFkIHJlc3VsdC5maWxlUGF0aHNbMF1cblxucG9zdC5vbiAnc2V0Um9vdERpcicgc2V0Um9vdERpclxuXG4jICAwMDAwMDAwICAgMDAwMDAwMDAgICAwMDAwMDAwMCAgICAgICAgIDAwMDAwMDAwICAgMDAwMDAwMDAgICAwMDAwMDAwICAgMDAwMDAwMCAgICAwMDAgICAwMDAgIFxuIyAwMDAgICAwMDAgIDAwMCAgIDAwMCAgMDAwICAgMDAwICAgICAgICAwMDAgICAwMDAgIDAwMCAgICAgICAwMDAgICAwMDAgIDAwMCAgIDAwMCAgIDAwMCAwMDAgICBcbiMgMDAwMDAwMDAwICAwMDAwMDAwMCAgIDAwMDAwMDAwICAgICAgICAgMDAwMDAwMCAgICAwMDAwMDAwICAgMDAwMDAwMDAwICAwMDAgICAwMDAgICAgMDAwMDAgICAgXG4jIDAwMCAgIDAwMCAgMDAwICAgICAgICAwMDAgICAgICAgICAgICAgIDAwMCAgIDAwMCAgMDAwICAgICAgIDAwMCAgIDAwMCAgMDAwICAgMDAwICAgICAwMDAgICAgIFxuIyAwMDAgICAwMDAgIDAwMCAgICAgICAgMDAwICAgICAgICAgICAgICAwMDAgICAwMDAgIDAwMDAwMDAwICAwMDAgICAwMDAgIDAwMDAwMDAgICAgICAgMDAwICAgICBcblxucG9zdC5vbiAnYXBwUmVhZHknIC0+XG5cbiAgICBpZiByb290RGlyID0gcHJlZnMuZ2V0ICdyb290RGlyJ1xuICAgICAgICBzdGFydEtvbnJhZCByb290RGlyXG4gICAgZWxzZVxuICAgICAgICBzZXRSb290RGlyKClcblxuIzAwMCAgIDAwMCAgMDAwICAwMDAgICAwMDAgICAgICAgIDAwMDAwMDAwICAgMDAwMDAwMDAgICAwMDAwMDAwICAgMDAwMDAwMCAgICAwMDAgICAwMDAgIFxuIzAwMCAwIDAwMCAgMDAwICAwMDAwICAwMDAgICAgICAgIDAwMCAgIDAwMCAgMDAwICAgICAgIDAwMCAgIDAwMCAgMDAwICAgMDAwICAgMDAwIDAwMCAgIFxuIzAwMDAwMDAwMCAgMDAwICAwMDAgMCAwMDAgICAgICAgIDAwMDAwMDAgICAgMDAwMDAwMCAgIDAwMDAwMDAwMCAgMDAwICAgMDAwICAgIDAwMDAwICAgIFxuIzAwMCAgIDAwMCAgMDAwICAwMDAgIDAwMDAgICAgICAgIDAwMCAgIDAwMCAgMDAwICAgICAgIDAwMCAgIDAwMCAgMDAwICAgMDAwICAgICAwMDAgICAgIFxuIzAwICAgICAwMCAgMDAwICAwMDAgICAwMDAgICAgICAgIDAwMCAgIDAwMCAgMDAwMDAwMDAgIDAwMCAgIDAwMCAgMDAwMDAwMCAgICAgICAwMDAgICAgIFxuXG5wb3N0Lm9uICd3aW5SZWFkeScgKHdJRCkgLT5cbiAgICBcbiAgICBwb3N0LnRvV2luIHdJRCwgJ2tvbnJhZFZlcnNpb24nIGtvbnJhZFZlcnNpb24gaWYga29ucmFkVmVyc2lvblxuXG4jIDAwMCAgIDAwMCAgMDAwICAgMDAwMDAwMCAgIDAwMCAgIDAwMCAgMDAwICAgICAgMDAwICAgMDAwMDAwMCAgIDAwMCAgIDAwMCAgMDAwMDAwMDAwICBcbiMgMDAwICAgMDAwICAwMDAgIDAwMCAgICAgICAgMDAwICAgMDAwICAwMDAgICAgICAwMDAgIDAwMCAgICAgICAgMDAwICAgMDAwICAgICAwMDAgICAgIFxuIyAwMDAwMDAwMDAgIDAwMCAgMDAwICAwMDAwICAwMDAwMDAwMDAgIDAwMCAgICAgIDAwMCAgMDAwICAwMDAwICAwMDAwMDAwMDAgICAgIDAwMCAgICAgXG4jIDAwMCAgIDAwMCAgMDAwICAwMDAgICAwMDAgIDAwMCAgIDAwMCAgMDAwICAgICAgMDAwICAwMDAgICAwMDAgIDAwMCAgIDAwMCAgICAgMDAwICAgICBcbiMgMDAwICAgMDAwICAwMDAgICAwMDAwMDAwICAgMDAwICAgMDAwICAwMDAwMDAwICAwMDAgICAwMDAwMDAwICAgMDAwICAgMDAwICAgICAwMDAgICAgIFxuXG5oaWdobGlnaHQgPSAtPlxuXG4gICAgcmV0dXJuIGlmIG5vdCBhcHAudHJheT8gXG4gICAgXG4gICAgaWYgc2xhc2gud2luKClcbiAgICAgICAgYXBwLnRyYXkuc2V0SW1hZ2Ugc2xhc2gucmVzb2x2ZSBzbGFzaC5qb2luIF9fZGlybmFtZSwgJy4uL2ltZy9tZW51LnBuZydcbiAgICAgICAgdW5oaWdobGlnaHQgPSAtPiBhcHAudHJheS5zZXRJbWFnZSBzbGFzaC5yZXNvbHZlIHNsYXNoLmpvaW4gX19kaXJuYW1lLCAnLi4vaW1nL21lbnVAMngucG5nJ1xuICAgICAgICBzZXRUaW1lb3V0IHVuaGlnaGxpZ2h0LCAxMDAwXG4gICAgZWxzZVxuICAgICAgICBcbiAgICAgICAgYXBwLnRyYXkuc2V0SGlnaGxpZ2h0TW9kZT8gJ2Fsd2F5cydcbiAgICAgICAgdW5oaWdobGlnaHQgPSAtPiBhcHAudHJheS5zZXRIaWdobGlnaHRNb2RlPyAnbmV2ZXInXG4gICAgICAgIHNldFRpbWVvdXQgdW5oaWdobGlnaHQsIDEwMDBcblxucG9zdC5vbiAnaGlnaGxpZ2h0JyBoaWdobGlnaHRcblxuIl19
|
243 | //# sourceURL=../coffee/main.coffee |
\ | No newline at end of file |