sync
[roojs1] / docs / symbols / Roo.json
1 {
2   "name" : "Roo",
3   "augments" : [],
4   "childClasses" : {  },
5   "tree_children" : [],
6   "tree_parent" : [],
7   "desc" : "Roo core utilities and functions.",
8   "isSingleton" : false,
9   "isStatic" : true,
10   "isBuiltin" : false,
11   "isAbstract" : false,
12   "isBuilderTop" : false,
13   "memberOf" : "Roo",
14   "example" : "",
15   "deprecated" : "",
16   "since" : "",
17   "see" : "",
18   "params" : [],
19   "returns" : [],
20   "throws" : "",
21   "requires" : "",
22   "config" : [],
23   "methods" : [
24     {
25       "name" : "each",
26       "type" : "function",
27       "desc" : "Iterates an array calling the passed function with each item, stopping if your function returns false. If the\npassed array is not really an array, your function is called once with it.\nThe supplied function is called with (Object item, Number index, Array allItems).",
28       "sig" : "(array, fn, scope)",
29       "static" : true,
30       "memberOf" : "",
31       "isStatic" : true,
32       "isConstructor" : false,
33       "isPrivate" : false,
34       "example" : "",
35       "deprecated" : "",
36       "since" : "",
37       "see" : "",
38       "exceptions" : "",
39       "requires" : "",
40       "params" : [
41         {
42           "name" : "array",
43           "type" : "Array/NodeList/Mixed",
44           "desc" : "",
45           "isOptional" : false
46         },
47         {
48           "name" : "fn",
49           "type" : "Function",
50           "desc" : "",
51           "isOptional" : false
52         },
53         {
54           "name" : "scope",
55           "type" : "Object",
56           "desc" : "",
57           "isOptional" : false
58         }
59       ],
60       "returns" : []
61     },
62     {
63       "name" : "get",
64       "type" : "function",
65       "desc" : "Static method to retrieve Element objects. Uses simple caching to consistently return the same object.\nAutomatically fixes if an object was recreated with the same id via AJAX or DOM.\nShorthand of {@link Roo.Element#get}",
66       "sig" : "(el)",
67       "static" : true,
68       "memberOf" : "",
69       "isStatic" : true,
70       "isConstructor" : false,
71       "isPrivate" : false,
72       "example" : "",
73       "deprecated" : "",
74       "since" : "",
75       "see" : "",
76       "exceptions" : "",
77       "requires" : "",
78       "params" : [
79         {
80           "name" : "el",
81           "type" : "String/HTMLElement/Element",
82           "desc" : "The id of the node, a DOM Node or an existing Element.",
83           "isOptional" : false
84         }
85       ],
86       "returns" : [
87         {
88           "name" : "",
89           "type" : "Element",
90           "desc" : "The Element object"
91         }
92       ]
93     },
94     {
95       "name" : "decode",
96       "type" : "function",
97       "desc" : "Shorthand for {@link Roo.util.JSON#decode}",
98       "sig" : "()\n{\n\n}",
99       "static" : true,
100       "memberOf" : "",
101       "isStatic" : true,
102       "isConstructor" : false,
103       "isPrivate" : false,
104       "example" : "",
105       "deprecated" : "",
106       "since" : "",
107       "see" : "",
108       "exceptions" : "",
109       "requires" : "",
110       "params" : [],
111       "returns" : []
112     },
113     {
114       "name" : "getDom",
115       "type" : "function",
116       "desc" : "Return the dom node for the passed string (id), dom node, or Roo.Element",
117       "sig" : "(el)",
118       "static" : true,
119       "memberOf" : "",
120       "isStatic" : true,
121       "isConstructor" : false,
122       "isPrivate" : false,
123       "example" : "",
124       "deprecated" : "",
125       "since" : "",
126       "see" : "",
127       "exceptions" : "",
128       "requires" : "",
129       "params" : [
130         {
131           "name" : "el",
132           "type" : "String/HTMLElement/Roo.Element",
133           "desc" : "",
134           "isOptional" : false
135         }
136       ],
137       "returns" : [
138         {
139           "name" : "",
140           "type" : "",
141           "desc" : "HTMLElement"
142         }
143       ]
144     },
145     {
146       "name" : "urlEncode",
147       "type" : "function",
148       "desc" : "Takes an object and converts it to an encoded URL. e.g. Roo.urlEncode({foo: 1, bar: 2}); would return \"foo=1&bar=2\".  Optionally, property values can be arrays, instead of keys and the resulting string that's returned will contain a name/value pair for each array value.",
149       "sig" : "(o)",
150       "static" : true,
151       "memberOf" : "",
152       "isStatic" : true,
153       "isConstructor" : false,
154       "isPrivate" : false,
155       "example" : "",
156       "deprecated" : "",
157       "since" : "",
158       "see" : "",
159       "exceptions" : "",
160       "requires" : "",
161       "params" : [
162         {
163           "name" : "o",
164           "type" : "Object",
165           "desc" : "",
166           "isOptional" : false
167         }
168       ],
169       "returns" : [
170         {
171           "name" : "",
172           "type" : "String",
173           "desc" : ""
174         }
175       ]
176     },
177     {
178       "name" : "addBehaviors",
179       "type" : "function",
180       "desc" : "Applies event listeners to elements by selectors when the document is ready.\nThe event name is specified with an @ suffix.\n<pre><code>\nRoo.addBehaviors({\n   // add a listener for click on all anchors in element with id foo\n   '#foo a@click' : function(e, t){\n       // do something\n   },\n\n   // add the same listener to multiple selectors (separated by comma BEFORE the @)\n   '#foo a, #bar span.some-class@mouseover' : function(){\n       // do something\n   }\n});\n</code></pre>",
181       "sig" : "(obj)",
182       "static" : true,
183       "memberOf" : "",
184       "isStatic" : true,
185       "isConstructor" : false,
186       "isPrivate" : false,
187       "example" : "",
188       "deprecated" : "",
189       "since" : "",
190       "see" : "",
191       "exceptions" : "",
192       "requires" : "",
193       "params" : [
194         {
195           "name" : "obj",
196           "type" : "Object",
197           "desc" : "The list of behaviors to apply",
198           "isOptional" : false
199         }
200       ],
201       "returns" : []
202     },
203     {
204       "name" : "getGridSize",
205       "type" : "function",
206       "desc" : "Find the current bootstrap width Grid size\nNote xs is the default for smaller.. - this is currently used by grids to render correct columns",
207       "sig" : "()\n{\n\n}",
208       "static" : true,
209       "memberOf" : "",
210       "isStatic" : true,
211       "isConstructor" : false,
212       "isPrivate" : false,
213       "example" : "",
214       "deprecated" : "",
215       "since" : "",
216       "see" : "",
217       "exceptions" : "",
218       "requires" : "",
219       "params" : [],
220       "returns" : []
221     },
222     {
223       "name" : "factory",
224       "type" : "function",
225       "desc" : "Creates namespaces to be used for scoping variables and classes so that they are not global.  Usage:\n<pre><code>\nRoo.factory({ xns: Roo.data, xtype : 'Store', .....});\nRoo.factory(conf, Roo.data);\n</code></pre>",
226       "sig" : "(classname, namespace)",
227       "static" : true,
228       "memberOf" : "",
229       "isStatic" : true,
230       "isConstructor" : false,
231       "isPrivate" : false,
232       "example" : "",
233       "deprecated" : "",
234       "since" : "",
235       "see" : "",
236       "exceptions" : "",
237       "requires" : "",
238       "params" : [
239         {
240           "name" : "classname",
241           "type" : "String",
242           "desc" : "",
243           "isOptional" : false
244         },
245         {
246           "name" : "namespace",
247           "type" : "String",
248           "desc" : "(optional)",
249           "isOptional" : false
250         }
251       ],
252       "returns" : []
253     },
254     {
255       "name" : "apply",
256       "type" : "function",
257       "desc" : "Copies all the properties of config to obj.",
258       "sig" : "(obj, config, defaults)",
259       "static" : true,
260       "memberOf" : "",
261       "isStatic" : true,
262       "isConstructor" : false,
263       "isPrivate" : false,
264       "example" : "",
265       "deprecated" : "",
266       "since" : "",
267       "see" : "",
268       "exceptions" : "",
269       "requires" : "",
270       "params" : [
271         {
272           "name" : "obj",
273           "type" : "Object",
274           "desc" : "The receiver of the properties",
275           "isOptional" : false
276         },
277         {
278           "name" : "config",
279           "type" : "Object",
280           "desc" : "The source of the properties",
281           "isOptional" : false
282         },
283         {
284           "name" : "defaults",
285           "type" : "Object",
286           "desc" : "A different object that will also be applied for default values",
287           "isOptional" : false
288         }
289       ],
290       "returns" : [
291         {
292           "name" : "",
293           "type" : "Object",
294           "desc" : "returns obj"
295         }
296       ]
297     },
298     {
299       "name" : "onReady",
300       "type" : "function",
301       "desc" : "Fires when the document is ready (before onload and before images are loaded).  Shorthand of {@link Roo.EventManager#onDocumentReady}.",
302       "sig" : "(fn, scope, override)",
303       "static" : true,
304       "memberOf" : "",
305       "isStatic" : true,
306       "isConstructor" : false,
307       "isPrivate" : false,
308       "example" : "",
309       "deprecated" : "",
310       "since" : "",
311       "see" : "",
312       "exceptions" : "",
313       "requires" : "",
314       "params" : [
315         {
316           "name" : "fn",
317           "type" : "Function",
318           "desc" : "The method the event invokes",
319           "isOptional" : false
320         },
321         {
322           "name" : "scope",
323           "type" : "Object",
324           "desc" : "An  object that becomes the scope of the handler",
325           "isOptional" : false
326         },
327         {
328           "name" : "override",
329           "type" : "boolean",
330           "desc" : "If true, the obj passed in becomes\n                            the execution scope of the listener",
331           "isOptional" : false
332         }
333       ],
334       "returns" : []
335     },
336     {
337       "name" : "select",
338       "type" : "function",
339       "desc" : "Selects elements based on the passed CSS selector to enable working on them as 1.",
340       "sig" : "(selector, unique, root)",
341       "static" : true,
342       "memberOf" : "",
343       "isStatic" : true,
344       "isConstructor" : false,
345       "isPrivate" : false,
346       "example" : "",
347       "deprecated" : "",
348       "since" : "",
349       "see" : "",
350       "exceptions" : "",
351       "requires" : "",
352       "params" : [
353         {
354           "name" : "selector",
355           "type" : "String/Array",
356           "desc" : "The CSS selector or an array of elements",
357           "isOptional" : false
358         },
359         {
360           "name" : "unique",
361           "type" : "Boolean",
362           "desc" : "(optional) true to create a unique Roo.Element for each element (defaults to a shared flyweight object)",
363           "isOptional" : false
364         },
365         {
366           "name" : "root",
367           "type" : "HTMLElement/String",
368           "desc" : "(optional) The root element of the query or id of the root",
369           "isOptional" : false
370         }
371       ],
372       "returns" : [
373         {
374           "name" : "",
375           "type" : "CompositeElementLite/CompositeElement",
376           "desc" : ""
377         }
378       ]
379     },
380     {
381       "name" : "applyIf",
382       "type" : "function",
383       "desc" : "Copies all the properties of config to obj if they don't already exist.",
384       "sig" : "(obj, config)",
385       "static" : true,
386       "memberOf" : "",
387       "isStatic" : true,
388       "isConstructor" : false,
389       "isPrivate" : false,
390       "example" : "",
391       "deprecated" : "",
392       "since" : "",
393       "see" : "",
394       "exceptions" : "",
395       "requires" : "",
396       "params" : [
397         {
398           "name" : "obj",
399           "type" : "Object",
400           "desc" : "The receiver of the properties",
401           "isOptional" : false
402         },
403         {
404           "name" : "config",
405           "type" : "Object",
406           "desc" : "The source of the properties",
407           "isOptional" : false
408         }
409       ],
410       "returns" : [
411         {
412           "name" : "",
413           "type" : "Object",
414           "desc" : "returns obj"
415         }
416       ]
417     },
418     {
419       "name" : "getCmp",
420       "type" : "function",
421       "desc" : "Shorthand for {@link Roo.ComponentMgr#get}",
422       "sig" : "(id)",
423       "static" : true,
424       "memberOf" : "",
425       "isStatic" : true,
426       "isConstructor" : false,
427       "isPrivate" : false,
428       "example" : "",
429       "deprecated" : "",
430       "since" : "",
431       "see" : "",
432       "exceptions" : "",
433       "requires" : "",
434       "params" : [
435         {
436           "name" : "id",
437           "type" : "String",
438           "desc" : "",
439           "isOptional" : false
440         }
441       ],
442       "returns" : [
443         {
444           "name" : "",
445           "type" : "",
446           "desc" : "Roo.Component"
447         }
448       ]
449     },
450     {
451       "name" : "id",
452       "type" : "function",
453       "desc" : "Generates unique ids. If the element already has an id, it is unchanged",
454       "sig" : "(el, prefix)",
455       "static" : true,
456       "memberOf" : "",
457       "isStatic" : true,
458       "isConstructor" : false,
459       "isPrivate" : false,
460       "example" : "",
461       "deprecated" : "",
462       "since" : "",
463       "see" : "",
464       "exceptions" : "",
465       "requires" : "",
466       "params" : [
467         {
468           "name" : "el",
469           "type" : "String/HTMLElement/Element",
470           "desc" : "(optional) The element to generate an id for",
471           "isOptional" : false
472         },
473         {
474           "name" : "prefix",
475           "type" : "String",
476           "desc" : "(optional) Id prefix (defaults \"Roo-gen\")",
477           "isOptional" : false
478         }
479       ],
480       "returns" : [
481         {
482           "name" : "",
483           "type" : "String",
484           "desc" : "The generated Id."
485         }
486       ]
487     },
488     {
489       "name" : "encodeURIComponent",
490       "type" : "function",
491       "desc" : "Safe version of encodeURIComponent",
492       "sig" : "(data)",
493       "static" : true,
494       "memberOf" : "",
495       "isStatic" : true,
496       "isConstructor" : false,
497       "isPrivate" : false,
498       "example" : "",
499       "deprecated" : "",
500       "since" : "",
501       "see" : "",
502       "exceptions" : "",
503       "requires" : "",
504       "params" : [
505         {
506           "name" : "data",
507           "type" : "String",
508           "desc" : "",
509           "isOptional" : false
510         }
511       ],
512       "returns" : [
513         {
514           "name" : "",
515           "type" : "String",
516           "desc" : ""
517         }
518       ]
519     },
520     {
521       "name" : "encode",
522       "type" : "function",
523       "desc" : "Shorthand for {@link Roo.util.JSON#encode}",
524       "sig" : "()\n{\n\n}",
525       "static" : true,
526       "memberOf" : "",
527       "isStatic" : true,
528       "isConstructor" : false,
529       "isPrivate" : false,
530       "example" : "",
531       "deprecated" : "",
532       "since" : "",
533       "see" : "",
534       "exceptions" : "",
535       "requires" : "",
536       "params" : [],
537       "returns" : []
538     },
539     {
540       "name" : "fly",
541       "type" : "function",
542       "desc" : "Gets the globally shared flyweight Element, with the passed node as the active element. Do not store a reference to this element -\nthe dom node can be overwritten by other code.\nShorthand of {@link Roo.Element#fly}",
543       "sig" : "(el, named)",
544       "static" : true,
545       "memberOf" : "",
546       "isStatic" : true,
547       "isConstructor" : false,
548       "isPrivate" : false,
549       "example" : "",
550       "deprecated" : "",
551       "since" : "",
552       "see" : "",
553       "exceptions" : "",
554       "requires" : "",
555       "params" : [
556         {
557           "name" : "el",
558           "type" : "String/HTMLElement",
559           "desc" : "The dom node or id",
560           "isOptional" : false
561         },
562         {
563           "name" : "named",
564           "type" : "String",
565           "desc" : "(optional) Allows for creation of named reusable flyweights to\n                                 prevent conflicts (e.g. internally Roo uses \"_internal\")",
566           "isOptional" : false
567         }
568       ],
569       "returns" : [
570         {
571           "name" : "",
572           "type" : "Element",
573           "desc" : "The shared Element object"
574         }
575       ]
576     },
577     {
578       "name" : "isEmpty",
579       "type" : "function",
580       "desc" : "Returns true if the passed value is null, undefined or an empty string (optional).",
581       "sig" : "(value, allowBlank)",
582       "static" : true,
583       "memberOf" : "",
584       "isStatic" : true,
585       "isConstructor" : false,
586       "isPrivate" : false,
587       "example" : "",
588       "deprecated" : "",
589       "since" : "",
590       "see" : "",
591       "exceptions" : "",
592       "requires" : "",
593       "params" : [
594         {
595           "name" : "value",
596           "type" : "Mixed",
597           "desc" : "The value to test",
598           "isOptional" : false
599         },
600         {
601           "name" : "allowBlank",
602           "type" : "Boolean",
603           "desc" : "(optional) Pass true if an empty string is not considered empty",
604           "isOptional" : false
605         }
606       ],
607       "returns" : [
608         {
609           "name" : "",
610           "type" : "Boolean",
611           "desc" : ""
612         }
613       ]
614     },
615     {
616       "name" : "query",
617       "type" : "function",
618       "desc" : "Selects an array of DOM nodes by CSS/XPath selector. Shorthand of {@link Roo.DomQuery#select}",
619       "sig" : "(path, root)",
620       "static" : true,
621       "memberOf" : "",
622       "isStatic" : true,
623       "isConstructor" : false,
624       "isPrivate" : false,
625       "example" : "",
626       "deprecated" : "",
627       "since" : "",
628       "see" : "",
629       "exceptions" : "",
630       "requires" : "",
631       "params" : [
632         {
633           "name" : "path",
634           "type" : "String",
635           "desc" : "The selector/xpath query",
636           "isOptional" : false
637         },
638         {
639           "name" : "root",
640           "type" : "Node",
641           "desc" : "(optional) The start of the query (defaults to document).",
642           "isOptional" : false
643         }
644       ],
645       "returns" : [
646         {
647           "name" : "",
648           "type" : "Array",
649           "desc" : ""
650         }
651       ]
652     },
653     {
654       "name" : "urlDecode",
655       "type" : "function",
656       "desc" : "Takes an encoded URL and and converts it to an object. e.g. Roo.urlDecode(\"foo=1&bar=2\"); would return {foo: 1, bar: 2} or Roo.urlDecode(\"foo=1&bar=2&bar=3&bar=4\", true); would return {foo: 1, bar: [2, 3, 4]}.",
657       "sig" : "(string, overwrite)",
658       "static" : true,
659       "memberOf" : "",
660       "isStatic" : true,
661       "isConstructor" : false,
662       "isPrivate" : false,
663       "example" : "",
664       "deprecated" : "",
665       "since" : "",
666       "see" : "",
667       "exceptions" : "",
668       "requires" : "",
669       "params" : [
670         {
671           "name" : "string",
672           "type" : "String",
673           "desc" : "",
674           "isOptional" : false
675         },
676         {
677           "name" : "overwrite",
678           "type" : "Boolean",
679           "desc" : "(optional) Items of the same name will overwrite previous values instead of creating an an array (Defaults to false).",
680           "isOptional" : false
681         }
682       ],
683       "returns" : [
684         {
685           "name" : "",
686           "type" : "Object",
687           "desc" : "A literal with members"
688         }
689       ]
690     },
691     {
692       "name" : "escapeRe",
693       "type" : "function",
694       "desc" : "Escapes the passed string for use in a regular expression",
695       "sig" : "(str)",
696       "static" : true,
697       "memberOf" : "",
698       "isStatic" : true,
699       "isConstructor" : false,
700       "isPrivate" : false,
701       "example" : "",
702       "deprecated" : "",
703       "since" : "",
704       "see" : "",
705       "exceptions" : "",
706       "requires" : "",
707       "params" : [
708         {
709           "name" : "str",
710           "type" : "String",
711           "desc" : "",
712           "isOptional" : false
713         }
714       ],
715       "returns" : [
716         {
717           "name" : "",
718           "type" : "String",
719           "desc" : ""
720         }
721       ]
722     },
723     {
724       "name" : "extend",
725       "type" : "function",
726       "desc" : "Extends one class with another class and optionally overrides members with the passed literal. This class\nalso adds the function \"override()\" to the class that can be used to override\nmembers on an instance.",
727       "sig" : "(subclass, superclass, overrides)",
728       "static" : true,
729       "memberOf" : "",
730       "isStatic" : true,
731       "isConstructor" : false,
732       "isPrivate" : false,
733       "example" : "",
734       "deprecated" : "",
735       "since" : "",
736       "see" : "",
737       "exceptions" : "",
738       "requires" : "",
739       "params" : [
740         {
741           "name" : "subclass",
742           "type" : "Object",
743           "desc" : "The class inheriting the functionality",
744           "isOptional" : false
745         },
746         {
747           "name" : "superclass",
748           "type" : "Object",
749           "desc" : "The class being extended",
750           "isOptional" : false
751         },
752         {
753           "name" : "overrides",
754           "type" : "Object",
755           "desc" : "(optional) A literal with members",
756           "isOptional" : false
757         }
758       ],
759       "returns" : []
760     },
761     {
762       "name" : "override",
763       "type" : "function",
764       "desc" : "Adds a list of functions to the prototype of an existing class, overwriting any existing methods with the same name.\nUsage:<pre><code>\nRoo.override(MyClass, {\n    newMethod1: function(){\n        // etc.\n    },\n    newMethod2: function(foo){\n        // etc.\n    }\n});\n </code></pre>",
765       "sig" : "(origclass, overrides)",
766       "static" : true,
767       "memberOf" : "",
768       "isStatic" : true,
769       "isConstructor" : false,
770       "isPrivate" : false,
771       "example" : "",
772       "deprecated" : "",
773       "since" : "",
774       "see" : "",
775       "exceptions" : "",
776       "requires" : "",
777       "params" : [
778         {
779           "name" : "origclass",
780           "type" : "Object",
781           "desc" : "The class to override",
782           "isOptional" : false
783         },
784         {
785           "name" : "overrides",
786           "type" : "Object",
787           "desc" : "The list of functions to add to origClass.  This should be specified as an object literal\ncontaining one or more methods.",
788           "isOptional" : false
789         }
790       ],
791       "returns" : []
792     },
793     {
794       "name" : "selectNode",
795       "type" : "function",
796       "desc" : "Selects a single element as a Roo Element\nThis is about as close as you can get to jQuery's $('do crazy stuff')",
797       "sig" : "(selector, root)",
798       "static" : true,
799       "memberOf" : "",
800       "isStatic" : true,
801       "isConstructor" : false,
802       "isPrivate" : false,
803       "example" : "",
804       "deprecated" : "",
805       "since" : "",
806       "see" : "",
807       "exceptions" : "",
808       "requires" : "",
809       "params" : [
810         {
811           "name" : "selector",
812           "type" : "String",
813           "desc" : "The selector/xpath query",
814           "isOptional" : false
815         },
816         {
817           "name" : "root",
818           "type" : "Node",
819           "desc" : "(optional) The start of the query (defaults to document).",
820           "isOptional" : false
821         }
822       ],
823       "returns" : [
824         {
825           "name" : "",
826           "type" : "Roo.Element",
827           "desc" : ""
828         }
829       ]
830     },
831     {
832       "name" : "type",
833       "type" : "function",
834       "desc" : "Returns the type of object that is passed in. If the object passed in is null or undefined it\nreturn false otherwise it returns one of the following values:<ul>\n<li><b>string</b>: If the object passed is a string</li>\n<li><b>number</b>: If the object passed is a number</li>\n<li><b>boolean</b>: If the object passed is a boolean value</li>\n<li><b>function</b>: If the object passed is a function reference</li>\n<li><b>object</b>: If the object passed is an object</li>\n<li><b>array</b>: If the object passed is an array</li>\n<li><b>regexp</b>: If the object passed is a regular expression</li>\n<li><b>element</b>: If the object passed is a DOM Element</li>\n<li><b>nodelist</b>: If the object passed is a DOM NodeList</li>\n<li><b>textnode</b>: If the object passed is a DOM text node and contains something other than whitespace</li>\n<li><b>whitespace</b>: If the object passed is a DOM text node and contains only whitespace</li>",
835       "sig" : "(object)",
836       "static" : true,
837       "memberOf" : "",
838       "isStatic" : true,
839       "isConstructor" : false,
840       "isPrivate" : false,
841       "example" : "",
842       "deprecated" : "",
843       "since" : "",
844       "see" : "",
845       "exceptions" : "",
846       "requires" : "",
847       "params" : [
848         {
849           "name" : "object",
850           "type" : "Mixed",
851           "desc" : "",
852           "isOptional" : false
853         }
854       ],
855       "returns" : [
856         {
857           "name" : "",
858           "type" : "String",
859           "desc" : ""
860         }
861       ]
862     }
863   ],
864   "events" : []
865 }