1 'use strict';
  2 function okrugldo(a,b){
  3 /**Округлить a с точностью до b*/
  4 	if(!b)
  5 		b=1;
  6 	a=Math.round(a/b)*b;
  7 	return a;
  8 }
  9 function sluchch(n,k,s){
 10 /**Случайное число от n до k с шагом s.
 11 Если s опущено - с шагом 1.
 12 Если k опущено - от 0 до n*/
 13 	if(!s)
 14 		s=1;
 15 	if(k==undefined)
 16 		return sluchch(0,n,1);
 17 	
 18 	return okrugldo(Math.random() * (k-n),s) + n;
 19 }
 20 
 21 function slKrome(a,p1,p2,p3){
 22 /**Случайное число, кроме a:
 23 если a - массив, то не содержащееся в нём;
 24 если a - число или строка, то не равное ему;
 25 если a - функция, принимающая параметр - то не удовлетворяющее ей (т. е. чтобы функция вернула 0).*/
 26 	var b;
 27 	
 28 	if(a.isNumber || a.isString)
 29 		do{
 30 			b=sl(p1,p2,p3);
 31 		}while(b==a);
 32 	else if(a.isArray)
 33 		if(a.length)
 34 			do{
 35 				b=sl(p1,p2,p3);
 36 			}while(a.hasElem(b));
 37 		else
 38 			return sl(p1,p2,p3);
 39 	else if(a.isFunction)
 40 		do{
 41 			b=sl(p1,p2,p3);
 42 		}while(a(b));
 43 	else
 44 		console.error('Первый параметр функции slKrome должен быть числом, строкой, массивом или функцией.');
 45 	return b;
 46 }
 47 
 48 function sluchDel(a){
 49 /**Случайный делитель числа a*/
 50 	return a.sluchDel();
 51 }
 52 
 53 function sluchiz(a,n){
 54 /**Массив n случайных неповторяющихся элементов массива a*/	
 55 	if(!(n>=1))
 56 		n=1;
 57 	var b=a.slice();
 58 	b.shuffle();
 59 	b.length=n;
 60 	return b;
 61 }
 62 
 63 function chislit(a,s1,s2,s5){
 64 /**Вспомогательная процедура*/
 65 	a=a%100;
 66 	if((a>=5)&&(a<=20))
 67 		return s5;
 68 	
 69 	a=a%10;
 70 	if(a==1)
 71 		return s1;
 72 	
 73 	if((a<=4)&&(a>=2))
 74 		return s2;
 75 	
 76 	return s5;
 77 }
 78 
 79 function s3ug(Ax,Ay,Bx,By,Cx,Cy){
 80 /**Площадь треугольника по координатам трёх вершин.*/
 81 	return 0.5*(Ax*By+Ay*Cx+Bx*Cy-By*Cx-Cy*Ax-Ay*Bx).abs();
 82 }
 83 
 84 function chislitM(p1,p2,p3,p4){
 85 	return p1.ts()+' '+chislit(p1,p2,p3,p4);
 86 }
 87 
 88 function chislitlx(p1,p2,p3){
 89 /***/
 90 	var rez=sklonlxkand(p2,undefined,0);
 91 	switch(p3){
 92 		case 'i': return chislitM(p1,	rez.ie,	(rez.r2?rez.r2:rez.re),	rez.rm);
 93 		case 'r': return chislitM(p1,	rez.re,	 rez.rm,				rez.rm);
 94 		case 'd': return chislitM(p1,	rez.de,	 rez.dm,				rez.dm);
 95 		case 'v': return chislitM(p1,	rez.ve,	(rez.r2?rez.r2:rez.ve),	rez.vm);
 96 		case 't': return chislitM(p1,	rez.te,	 rez.tm,				rez.tm);
 97 		case 'p': return chislitM(p1,	rez.pe,	 rez.pm,				rez.pm);
 98 	}
 99 	return chislitM(p1,rez.ie,(rez.r2?rez.r2:rez.re),rez.rm);
100 }
101 
102 var Drob={};
103 
104 Drob.prov=function(p1){
105 	p1=Drob.fixN(p1);
106 	return !!p1.ch&&!!p1.zn;
107 }
108 
109 Drob.fixN=function(p1){
110 	if(p1.isNumber)
111 		p1={ch:p1,zn:1};
112 	return p1;
113 }
114 
115 Drob.sokr=function(p1){
116 	p1=Drob.fixN(p1);
117 	if(!Drob.prov(p1))return null;
118 	if(p1.zn<0){
119 		p1.ch*=-1;
120 		p1.zn*=-1;
121 	}
122 	var a1=p1.ch.nod(p1.zn);
123 	p1.ch/=a1;
124 	p1.zn/=a1;
125 	return p1;
126 }
127 
128 function clone(obj){
129 	if(obj == null || typeof(obj) != 'object')
130 		return obj;
131 	
132 	var temp = {};
133 	for(var key in obj)
134 		if(obj[key] === undefined)
135 			temp[key]=undefined;
136 		else if(obj[key].isArray)
137 			temp[key]=obj[key].slice();
138 		else
139 			temp[key] = clone(obj[key]);
140 	return temp;
141 }
142 
143 function sl1(){
144 	return Math.random().round();
145 }
146 
147 function sp(a){//Я просто оставлю это здесь
148 	for(var i=0,c=a.split('\''),b=[];i<c.length;i++)
149 		b=b.concat(i%2?c[i]:c[i].split(' '));
150 	for(var i=0;i<b.length;b.splice(i,!b[i++])){};
151 	return b;
152 }
153 
154 function cvet(a){
155 	return '#'+a.r.toString(16).dopdo('0',2)+a.g.toString(16).dopdo('0',2)+a.b.toString(16).dopdo('0',2);
156 }
157 
158 function proporMezhdu(a,b,pr){
159 	return a.proporMezhdu(b,pr);
160 }
161 
162 function cvetMezhdu(a,b,pr){
163 	return cvet({
164 		r:proporMezhdu(a.r,b.r,pr).round(),
165 		g:proporMezhdu(a.g,b.g,pr).round(),
166 		b:proporMezhdu(a.b,b.b,pr).round(),
167 	});
168 }
169 
170 function perevodVelichin(a){
171 /**Наброски движка про перевод величин*/
172 	var edIzm=a.iz(2);
173 	var ishIzm=edIzm[0];
174 	var rezIzm=edIzm[1];
175 	var koef=sl(0.1,9.9,0.1)*10 .pow(sl(-1,1));
176 	var otv=koef*ishIzm[1]/rezIzm[1];
177 	window.vopr.txt='Выразите '+chislitlx(koef,ishIzm[0])+' в '+lx[rezIzm[0]].pm;
178 	window.vopr.ver=[otv.ts()];
179 }
180 
181 
182 function multiplyMatrix(A,B){//http://mathhelpplanet.com/viewtopic.php?f=44&t=22337
183 	var rowsA = A.length,
184 		colsA = A[0].length,
185 		rowsB = B.length,
186 		colsB = B[0].length,
187 		C = [];
188 	for(var i=0; i<rowsA; i++)
189 		C[i]=[];
190 	for(	var k=0; k<colsB; k++)
191 		for(	var i=0; i < rowsA; i++){
192 			var temp=0;
193 			for(	var j = 0; j < rowsB; j++)
194 				temp += A[i][j]*B[j][k];
195 			C[i][k] = temp;
196 		}
197 	return C;
198 }
199 
200 function Determinant(A){	// Определитель матрицы (используется алгоритм Барейса)
201 	var N=A.length,
202 		B=[],
203 		denom=1,
204 		exchanges=0;
205 	for(var i=0; i<N; ++i){
206 		B[i]=[];
207 		for(var j=0; j<N; ++j)
208 			B[i][j] = A[i][j];
209 	}
210 	for(var i=0; i<N-1; ++i){
211 		var maxN=i,
212 		maxValue=Math.abs(B[i][i]);
213 		for(var j=i+1; j<N; ++j){
214 			var value=Math.abs(B[j][i]);
215 			if(value>maxValue){
216 				maxN=j;
217 				maxValue = value;
218 			}
219 		}
220 		if(maxN>i){
221 			var temp = B[i]; B[i] = B[maxN]; B[maxN] = temp;
222 			++exchanges;
223 		}else if(maxValue==0)
224 			return maxValue; 
225 		var value1=B[i][i];
226 		for(var j = i+1; j < N; ++j){
227 			var value2=B[j][i];
228 			B[j][i]=0;
229 			for(var k=i+1; k<N; ++k)
230 				B[j][k]=(B[j][k]*value1-B[i][k]*value2)/denom;
231 		}
232 		denom=value1;
233 	} //@ http://mathhelpplanet.com/viewtopic.php?f=44&t=22390
234 	if(exchanges%2)
235 		return -B[N-1][N-1];
236 	else
237 		return B[N-1][N-1];
238 }
239 
240 function MatrixCofactor(i,j,A){   //Алгебраическое дополнение матрицы
241 	var N=A.length,
242 		sign=((i+j)%2==0) ? 1 : -1;
243 	for(var m=0; m<N; m++){
244 		for(var n=j+1; n<N; n++)
245 			A[m][n-1]=A[m][n];
246 		A[m].length--;
247 	}
248 	for(var k=i+1; k<N; k++)
249 		A[k-1] = A[k];
250 	A.length--;
251 	return sign*Determinant(A);
252 }
253 
254 function AdjugateMatrix(A){   //Союзная (присоединённая) матрица
255 	var N=A.length,
256 		B=[],
257 		adjA=[];
258 	for(var i=0; i<N; i++){
259 		adjA[i]=[]; 
260 		for(var j=0; j<N; j++){
261 			for(var m=0; m<N; m++)
262 			{
263 				B[m]=[];
264 				for(var n = 0; n < N; n++)
265 					B[m][n] = A[m][n];
266 			}
267 			adjA[i][j] = MatrixCofactor(j,i,B);
268 		}
269 	}
270 	return adjA;
271 }
272 
273 function InverseMatrix(B){   // Обратная матрица
274 	var det=Determinant(B);
275 	if(!det)
276 		return false;
277 	var N=B.length,
278 		A = AdjugateMatrix(B);
279 	for(var i=0; i<N; i++)
280 		for(var j=0; j<N; j++)
281 			A[i][j] /= det; 
282 	return A;
283 }
284 
285 function objSum(a,b){
286 /**Сложение двух матриц или двух чисел.*/
287 	if(!a)
288 		return b;
289 	if(!b)
290 		return a;
291 	if(a.isNumber && b.isNumber)
292 		return a+b;
293 	if(a.isArray && b.isArray)
294 		return a.map(function(a1,b1){
295 			return objSum(a1,b[b1]);
296 		});
297 	return undefined;
298 }
299 
300 function objUmn(a,b){
301 /**Умножение a на b (матрица или число)*/
302 	if(!a || !b)
303 		return 0;
304 	if(a.isNumber && b.isNumber)
305 		return a*b;
306 	if(a.isArray && b.isArray)
307 		return multiplyMatrix(a,b);
308 	if(a.isArray && b.isNumber)
309 		return a.map(function(a1){
310 			return objUmn(a1,b);
311 		});
312 	if(b.isArray && a.isNumber)
313 		return objUmn(b,a);
314 	
315 	return undefined;
316 }
317 
318 function generateMatrix(stroki,stolbcy,min,max,p1){
319 /**Генерирует матрицу из случайных чисел. min, max и p1 - параметры sluchch.*/
320 	var rez=[];
321 	for(var i=0;i<stroki;i++){
322 		rez[i]=[];
323 		for(var j=0;j<stolbcy;j++)
324 			rez[i][j]=sl(min,max,p1);
325 	}
326 	return rez;
327 }
328 
329 function generateScalMatrix(x,n){
330 /**Генерирует скалярную иатрицу n на n с числом x на главной диагонали.*/
331 	var rez=generateMatrix(n,n,0);
332 	for(var i=0;i<n;i++)
333 		rez[i][i]=x;
334 	return rez;
335 }
336 
337 //перевод числа x из системы с основанием sysBefore в систему с основанием sysAfter
338 function intoAnotherSystem(x,sysBefore,sysAfter) {
339 //перевод из заданной в 10-ную
340 	var i=String(x).length;
341 	var c = 1;
342 	var x10 = 0;
343 	while (i>0) {
344 		var t = String(x).charAt(i-1)*1;
345 		if (isNaN(t))
346 			t = String(x).charCodeAt(i-1)-String("A").charCodeAt(0)+10;
347 		x10 = t*c+x10;
348 		i=i-1;
349 		c = c*sysBefore;
350 	}
351 //перевод из 10-ной в заданную
352 	var finall = '';
353 	while (x10>0) {
354 		var t = String(x10 % sysAfter);
355 		if (x10 % sysAfter >= 10)
356 			t = String.fromCharCode(String("A").charCodeAt(0)+(x10 % sysAfter)-10);
357 		x10 = Math.floor(x10/sysAfter);
358 		finall = t+finall;
359 	}
360 	return(finall);
361 }
362 
363 function isZ(n){
364 /**Является ли n целым числом.*/
365 	return n.isZ();
366 }
367 
368 function isPolnKvadr(n){
369 /**Является ли n полным квадратом.*/
370 	return n.isPolnKvadr();
371 }
372 
373 document.writeln=function(p1){
374 	return document.write(p1+'<br/>');
375 }
376 
377 function hasErrors(p,bdr){
378 	if(p==undefined)
379 		return 'undefined; '
380 	if(p.isFunction)
381 		return 0;
382 	var rez='';
383 	if(p.isNumber)
384 		p=''+p;
385 	if(p.isString){
386 		if(p.match(/NaN/))
387 			rez+='NaN; ';
388 		if(p.match(/undefined/))
389 			rez+='undefined; ';
390 		if(p.match(/Infinity/))
391 			rez+='Infinity; ';
392 		if(p.match(/[.,][0-9]*00000/))
393 			rez+='00000; ';
394 		if(!bdr && p.reverse().match(/[0-9]{6,}[.,](?!0("|sir))/))
395 			rez+='6 и более цифр после десятичной запятой '+
396 				'(если так и должно быть, установите vopr.kat.bdr значение 1; ';
397 	}
398 	if(p.isArray){
399 		for(var i=0;i<p.length;i++){
400 			rez+=hasErrors(p[i]);
401 		}
402 	}
403 	return rez;
404 }
405 
406 function rang_mat(A){//Отсюда: http://liloisproj.narod.ru/mat_rang.htm
407 	var i=A.length;
408 	var j=A[0].length;
409 	var q = Math.min(i,j);
410 
411 	while(q) // проверка: порядок матрицы меньше или равен минимальному из размеров матрицы?
412 	{ // если да
413 		var B = []; // создаем новую матрицу размера q
414 		for(var w=0;w<q;w++)
415 			B[w]=[];
416 		
417 		for(var a=0;a<(i-(q-1));a++) // тут начинается перебор матриц q-го порядка
418 		{
419 			for(var b=0;b<(j-(q-1));b++)
420 			{
421 				for(var c=0;c<q;c++)
422 				{
423 					for(var d=0;d<q;d++)
424 					{
425 						B[c][d] = A[a+c][b+d];
426 					}
427 				}
428 
429 				if(B.det()) // если определитель матрицы отличен от нуля
430 				{ // то
431 					return q; // присваиваем рангу значение q
432 				}
433 			}
434 		}
435 		q--;
436 	}
437 	return 0;
438 }
439 
440 function getLen(x1, x2, y1, y2){
441 	return Math.sqrt( Math.pow(x1-x2, 2)+Math.pow(y1-y2, 2) );
442 }
443 
444 function getRandomInt(min, max){
445 	return Math.floor(Math.random() * (max - min + 1)) + min;
446 }
447 
448 function makeStruct(strNames){
449 	var names = strNames.split(' ');
450 	var count = names.length;
451 	function constructor(){
452 		for (var i = 0; i < count; i++){
453 			this[names[i]] = arguments[i];
454 		}
455 	}
456 	return constructor;
457 }
458 
459 function make2Array(ch,k) {
460 /**из числа делает массив 0 и 1 с количеством элементов k*/
461 	var x=[];
462 	for (var i=0; i<k; i++) {
463 		var t=ch % 2;
464 		ch = Math.floor(ch / 2);
465 		x.push(t);
466 	}
467 	return x;
468 }
469 
470 function parseLogic(exp) {
471 /**преобразует логическое выражение в выражение, доступное для вычисления*/
472 	while (exp.indexOf('>')!=-1){
473 		var t = exp.indexOf('>');
474 		var A = findA(exp,t);
475 		exp=exp.insert(A,'!');
476 		exp = exp.replace('>','||');
477 	}
478 	while (exp.indexOf('~')!=-1){
479 		var t = exp.indexOf('~');
480 		var A = findA(exp,t);
481 		var B = findB(exp,t);
482 		var exp1=exp.substring(A,t);
483 		var exp2=exp.substring(t+1,B+1);
484 		exp = exp.replace(exp1+'~'+exp2,'('+exp1+'&&'+exp2+')'+'||(!'+exp1+'&&!'+exp2+')');
485 	}
486 	return exp;
487 }
488 
489 function findA(exp,t) {
490 	var i=t-1;
491 	if (exp[t-1]==')') {
492 		var k = 1;
493 		while (k>0){
494 			i--;
495 			if (exp[i]==')')
496 				k++;
497 			else if (exp[i]=='(')
498 				k--;
499 		}
500 	}
501 	else
502 		i=i-3;
503 	while (exp[i-1]=='!')
504 		i--;
505 	return i;
506 }
507 
508 function findB(exp,t) {
509 	var i=t+1;
510 	while (exp[i]=='!')
511 		i++;
512 	if (exp[t+1]=='(') {
513 		var k = 1;
514 		while (k>0){
515 			i++;
516 			if (exp[i]=='(')
517 				k++;
518 			else if (exp[i]==')')
519 				k--;
520 		}
521 	}
522 	else
523 		i = i+3;
524 	return i;
525 }
526 
527 function printLogic(exp) {
528 /**¬ - отрицание
529 → - стрелка направо
530 ∧ - Логическая и
531 ∨ - Логическая иили
532 ≡ - Идентичный, тождество
533 печатает логическое выражение*/
534 	exp=exp.replace(/\|\|/g,'∨');
535 	exp=exp.replace(/\&\&/g,'∧');
536 	exp=exp.replace(/\~/g,'≡');
537 	exp=exp.replace(/\>/g,'→');
538 	exp=exp.replace(/\!/g,'¬');
539 	var re = /x\[(\d)\]/g;
540 	exp = exp.replace(re, function(str,a) { return 'X'+(Number(a)+1) });
541 
542 	return exp;
543 }
544 
545 function genLogFunc(k,b) {
546 /**генерирует логическую функцию*/
547 	var t=0;
548 	var f='';
549 	for (var i=0;i<k;i++) {
550 		var d3=sl1();
551 		if (d3&&i!=0) {
552 			f=f+'(';
553 			t++;
554 		}
555 		f+='!'.esli(sl1());
556 		f=f+'x['+i+']';
557 		if (i!=k-1)	{
558 			var d4=sl1();
559 			if (d4&&t>0) {
560 				f=f+')';
561 				t--;
562 			}
563 			var d2=0;
564 			if (!b)
565 				d2=sluchch(3);
566 			else
567 				d2=sluchch(1,2);
568 			switch (d2) {
569 				case 0: 
570 					f='('+f+')';
571 					f=f+'>';
572 					break;
573 				case 1: 
574 					f=f+'||';
575 					break;
576 				case 2: 
577 					f=f+'&&';
578 					break;
579 				case 3: 
580 					f='('+f+')'+'~'+'(';
581 					t++;
582 					break;
583 			}
584 		}
585 	}
586 	for (var i=0; i<t; i++)
587 		f=f+')';
588 	//убираем лишние скобки
589 	var re = /\(x\[(\d)\]\)/g;
590 	while (f.search(re)!=-1) {
591 		f = f.replace(re, "x[$1]");
592 	}
593 	re = /\(!x\[(\d)\]\)/g;
594 	while (f.search(re)!=-1) {
595 		f = f.replace(re, "!x[$1]");
596 	}
597 	return f;
598 }
599 
600 function slLetter(b) {
601 /**генерирует случайную букву английского алфавита*/
602 	var a = '';
603 	if (!b)
604 		a = String.fromCharCode('a'.charCodeAt(0)+sluchch(25));
605 	else {
606 		if (b.isString) {
607 			var temp = b.charCodeAt(0)-'a'.charCodeAt(0);
608 			a = String.fromCharCode('a'.charCodeAt(0)+slKrome(temp,25));
609 		}
610 		else if (b.isArray) {
611 			var temp=[];
612 			for (var i=0; i<b.length; i++)
613 				temp[i] = b[i].charCodeAt(0)-'a'.charCodeAt(0);
614 			a = String.fromCharCode('a'.charCodeAt(0)+slKrome(temp,25));
615 		}
616 	}
617 	return a;
618 }
619 
620 function genMask() {
621 /**генерирует случайную маску*/
622 	var l = sluchch(5,10);//количество символов в маске
623 	var mask = '';
624 	for (var i=0; i<l; i++) {
625 		var d = sluchch(3);
626 		switch(d) {
627 			case 0:
628 				mask+='?';
629 				break;
630 			case 1:
631 				mask+='*';
632 				break;
633 			case 2:
634 			case 3:
635 				mask+=slLetter();
636 				break;
637 			
638 		}
639 	}
640 	if (mask.search(/\?/)==-1)
641 		mask = mask+'?';
642 	return mask;
643 }
644 
645 function genWrongWordForMask(rmask) {
646 /**генерирует случайное слово, похожее на маску, но с ошибкой*/
647 	var word='';
648 	var reg = rmask.replace(/\*/g,'[a-z]*').replace(/\?/g,'[a-z]');
649 	var mask = rmask;
650 	do{
651 		var re1 = /\*+\?\**|\**\?\*+/;//*?*
652 		var re2 = /([^\*]*)\?([^\*]*)/;//?
653 		if (sl1()&& mask.search(re1)!=-1) {
654 			mask=mask.replace(re1,'');
655 		}
656 		else if (sl1() && mask.search(re2)!=-1) {
657 			var w='';
658 			var d = slKrome(1,3);
659 			for (var j=0; j<d; j++)
660 				w+=slLetter();
661 			mask=mask.replace(re2,"$1"+w+"$2");
662 		}
663 		else {
664 			var l = mask.length;
665 			var d = sluchch(l-1);
666 			while (!mask[d].isLetter()) {
667 				d=sluchch(l-1);
668 			}
669 			mask=mask.replace(mask[d],slLetter());
670 		}
671 		var word = genWordForMask(mask);
672 
673 	}
674 	while (word.search(reg)!=-1)
675 	return word;
676 }
677 
678 function genWordForMask(mask) {
679 /**генерирует случайное слово по маске*/
680 	var l = mask.length;//количество символов в маске
681 	var word = '';
682 	for (var i=0; i<l; i++) {
683 		switch(mask[i]) {
684 			case '*':
685 				var d = sluchch(3);
686 				for (var j=0; j<d; j++)
687 					word+=slLetter();
688 				break;
689 			case '?':
690 				word+=slLetter();
691 				break;
692 			default:
693 				word+=mask[i];
694 				break;
695 			
696 		}
697 	}
698 	return word;
699 }
700 
701 function genAlg() {
702 /**Для составления цепочек/слов/бус/чисел разрешается использовать бусины k типов, обозначаемых буквами  
703 цепочка должна состоять из N бусин
704 0) нет правила
705 1) На i-м месте цепочки стоит одна из бусин [список]
706 2) На i-м месте не может стоять одна из бусин [список]
707 3) На i-м месте цепочки стоит бусина, которой нет на j-м месте цепочки
708 4) На i-м месте цепочки такая же бусина, как и на j-м месте цепочки
709 5) На i-м – любая гласная, если j согласная, и любая согласная, если j гласная
710 6) На i-м – любая гласная, если j гласная, и любая согласная, если j согласная
711 7) На i-м месте цепочки стоит гласная/согласная буква*/
712 	var alg=[];
713 	if (sl1()==0)
714 		alg.push('z');//цифры
715 	else
716 		alg.push('l');//буквы
717 	var has0 = false;
718 	var has1 = false;
719 	var k = sluchch(4,6);
720 	var N = sluchch(3,k-1);
721 	alg[1]=[];
722 	for (var i=0; i<k; i++) {
723 		if (alg[0]=='z'){
724 			var c = slKrome(alg[1],9);//список элементов, которые  можно использовать в цепочке
725 			if (c%2==0)
726 				has0=true;
727 			else
728 				has1=true;
729 		}
730 		else {
731 			var c = slLetter(alg[1]);//список элементов, которые  можно использовать в цепочке
732 			if (c.isGl())
733 				has0=true;
734 			else
735 				has1=true;
736 		}
737 		alg[1].push(c);
738 	}
739 
740 	for (var i=2; i<N+2; i++) {
741 		var d=0;
742 		if (has0 && has1)
743 			d = sluchch(7);//номер правила, используемого для данной бусины
744 		else
745 			d = sluchch(4);//если есть только согласные(гласные) буква, нельзя использовать 4,5 правило
746 		alg[i]=[];
747 		alg[i][0]=d;
748 		switch (d) {
749 			case 1:
750 			case 2:
751 				alg[i][1]=[];
752 				var c = sluchch(1,k-2);
753 				for (var j=0; j<c; j++)
754 					alg[i][1].push(slKrome(alg[i][1],k-1));//кладутся не сами буквы/цифры, а их индексы из alg[1]!
755 				break;
756 			case 3:
757 			case 4:
758 			case 5:
759 			case 6:
760 				if (i>2)
761 					alg[i][1]=slKrome(i-2,i-2);
762 				else alg[i][0]=0;
763 				break;
764 			case 7:
765 				alg[i][1]=sl1();//
766 				break;
767 		}
768 	}
769 	return alg;
770 }
771 
772 function algInText(alg) {
773 /**Преобразует алгоритм в текст*/
774 	var k = alg[1].length;
775 	var N = (alg.length-2);
776 	var ch = '';
777 	var text  = 'Для составления цепочек разрешается использовать бусины '+k+' типов, обозначаемых';
778 	if (alg[0]=='z'){
779 		text += ' цифрами ';
780 		ch = ['четная','нечетная'];
781 	}
782 	else {
783 		text += ' буквами ';
784 		ch = ['гласная','согласная'];
785 	}
786 	text += alg[1];
787 	text += '. Цепочка должна состоять из '+N+' бусин, при этом должны соблюдаться следующие правила:';
788 	for (var i=2; i<N+2; i++) {
789 		if (alg[i][0]!=0) {
790 			text = text+'<br/>';
791 			if (i==2)
792 				text = text+'На первом месте цепочки ';
793 			else if (i==N+1)
794 				text = text+'На последнем месте цепочки ';
795 			else
796 				text = text+'На '+(i-1)+'-м месте цепочки ';
797 		}
798 		switch (alg[i][0]) {
799 			case 1:
800 				text += 'стоит ';
801 				if (alg[i][1].length==1)
802 					text += 'бусина ';
803 				else
804 					text += 'одна из бусин ';
805 				for (var j=0; j<alg[i][1].length; j++)
806 					text += alg[1][alg[i][1][j]]+', ';
807 				break;
808 			case 2:
809 				text += 'не может стоять ';
810 				if (alg[i][1].length==1)
811 					text += 'бусина ';
812 				else
813 					text += 'одна из бусин ';
814 				for (var j=0; j<alg[i][1].length; j++)
815 					text += alg[1][alg[i][1][j]]+',';
816 				break;
817 			case 3:
818 				text += 'стоит бусина, которой нет на '+
819 					(alg[i][1]+1)+'-м месте цепочки';
820 				break;
821 			case 4:
822 				text += 'стоит такая же бусина, как и на '+
823 					(alg[i][1]+1)+'-м месте цепочки';
824 				break;
825 			case 5:
826 				text += 'стоит любая '+ch[0]+', если '+
827 					(alg[i][1]+1)+'-я '+ch[1]+', и любая '+ch[1]+', если '+
828 					(alg[i][1]+1)+'-я '+ch[0];
829 				break;
830 			case 6:
831 				text += 'стоит любая '+ch[0]+', если '+
832 					(alg[i][1]+1)+'-я '+ch[0]+', и любая '+ch[1]+', если '+
833 					(alg[i][1]+1)+'-я '+ch[1];
834 				break;
835 			case 7:
836 				text += 'стоит '+ch[alg[i][1]]+' буcина';
837 				break;
838 		}
839 	}
840 	return text;
841 }
842 
843 function genWordForAlg(walg) {
844 /**генерирует цепочку для алгоритма*/
845 	var alg = walg.slice();
846 	var word='';
847 	var k = alg[1].length;
848 	var ar0 = [];
849 	var ar1 = [];
850 	for (var i=0; i<k; i++){
851 		if (alg[0]=='z'){
852 			if (alg[1][i]%2==0)
853 				ar0.push(alg[1][i]);
854 			else
855 				ar1.push(alg[1][i]);
856 		}
857 		else {
858 			if (alg[1][i].isGl())
859 				ar0.push(alg[1][i]);
860 			else
861 				ar1.push(alg[1][i]);
862 		}
863 	}
864 	for (var i=2; i<alg.length; i++) {
865 		switch (alg[i][0]) {
866 			case 0:
867 				word+=alg[1].iz();
868 				break;
869 			case 1:
870 				word+=alg[1][alg[i][1].iz()];
871 				break;
872 			case 2:
873 				word+=alg[1][slKrome(alg[i][1],k-1)];
874 				break;
875 			case 3:
876 				word+=alg[1][slKrome(alg[1].indexOf(word[alg[i][1]]),k-1)];
877 				break;
878 			case 4:
879 				word+=word[alg[i][1]];
880 				break;
881 			case 5:
882 				if (alg[0]=='z'){
883 					if (word[alg[i][1]]%2==0)
884 						word+=ar1.iz();
885 					else
886 						word+=ar0.iz();
887 				}
888 				else {
889 					if (word[alg[i][1]].isGl())
890 						word+=ar1.iz();
891 					else
892 						word+=ar0.iz();
893 				}
894 				break;
895 			case 6:
896 				if (alg[0]=='z'){
897 					if (word[alg[i][1]]%2==0)
898 						word+=ar0.iz();
899 					else
900 						word+=ar1.iz();
901 				}
902 				else {
903 					if (word[alg[i][1]].isGl())
904 						word+=ar0.iz();
905 					else
906 						word+=ar1.iz();
907 				}
908 				break;
909 			case 7:
910 				if (alg[i][1])
911 					word+=ar1.iz();
912 				else
913 					word+=ar0.iz();
914 				break;
915 		}
916 	}
917 	return word;
918 }
919 
920 function genWrongWordForAlg(walg) {
921 /**генерирует цепочку для алгоритма*/
922 	var alg = walg.copyAr();
923 	var N = (alg.length-2);
924 	var r = 0;
925 	do {
926 		r = sluchch(2,N+1);
927 	} while (alg[r][0]==0);
928 	switch (alg[r][0]) {
929 		case 1:
930 			alg[r][0]=2;
931 			break;
932 		case 2:
933 			alg[r][0]=1;
934 			break;
935 		case 3:
936 			alg[r][0]=4;
937 			break;
938 		case 4:
939 			alg[r][0]=3;
940 			break;
941 		case 5:
942 			alg[r][0]=6;//
943 			break;
944 		case 6:
945 			alg[r][0]=5;//
946 			break;
947 		case 7:
948 			alg[r][1]=1-alg[r][1];//
949 			break;
950 	}
951 	var word = '';
952 	var word = genWordForAlg(alg);
953 	return word;
954 }
955 
956 
957 function printLogicRus(exp,ar) {
958 	exp=exp.replace(/\|\|/g,' ИЛИ ');
959 	exp=exp.replace(/\&\&/g,' И ');
960 	exp=exp.replace(/\!/g,' НЕ ');
961 	var re = /c\[(\d)\]/g;
962 	exp = exp.replace(re, function(str,a) { return ar[Number(a)] });
963 	return exp;
964 }
965 
966 function genPifag(){
967 	return objUmn([[sl(1,5)]],[om.pifagtr.iz().slice()])[0];
968 }
969 
970 function mapRecursive(obj,fun){
971 	if(obj.isFunction){
972 		return obj;
973 	}
974 	if(obj===undefined || obj.isNumber || obj.isString){
975 		return fun(obj);
976 	}
977 	if(obj.isArray){
978 		var len=obj.length;
979 		var rez=[];
980 		for(var i=0;i<len;i++){
981 			rez[i]=mapRecursive(obj[i],fun);
982 		}
983 		return rez;
984 	}
985 	if(obj.isObject){
986 		var rez={};
987 		for(var chto in obj){
988 			rez[chto]=mapRecursive(obj[chto],fun);
989 		}
990 		return rez;
991 	}
992 	return obj;
993 }
994 
995 function compareObjects(a,b,propList){
996 	var len=propList.length;
997 	for(var i=0;i<len;i++){
998 		if(a[propList[i]]<b[propList[i]])
999 			return -1;
1000 		else if (a[propList[i]]>b[propList[i]])
1001 			return 1;
1002 	}
1003 	return 0;
1004 }
1005 
1006 function safeinc(obj,prop){
1007 	if(!obj[prop])
1008 		obj[prop]=1;
1009 	else
1010 		obj[prop]++;
1011 }
1012 
1013 function setProps(obj,props){
1014 	for(var chto in props){
1015 		obj[chto]=props[chto];
1016 	}
1017 }
1018 'use strict';
1019 /*Функции, затрагивающие DOM, но не использующие jquery и другие внешние библиотеки*/
1020 
1021 function escapeFromIframe(){
1022 /**"Выпрыгивание" из iframe*/
1023 	if(top.location.href!=document.location.href)
1024 		top.location.href=document.location.href;
1025 }
1026 
1027 function getDocHeight(){
1028     var D = document;
1029     return Math.max(
1030         Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
1031         Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
1032         Math.max(D.body.clientHeight, D.documentElement.clientHeight)
1033     );
1034 }//Вроде как отсюда: http://james.padolsey.com/javascript/get-document-height-cross-browser/
1035 
1036 function catchTab(elem,key){
1037 	if(key.keyCode==9){
1038 		var n=elem.scrollTop;
1039 		var val=elem.value;
1040 		var sel=elem.selectionStart;
1041 		var rep=val.substr(elem.selectionStart-1,elem.selectionEnd-elem.selectionStart);
1042 		if(rep.match(/[\n\r]/)){
1043 			console.log(rep);
1044 			rep=rep.replace(/[\n](?![\n\r])/g,'\n\t');
1045 			rep=rep.replace(/[\r](?![\n\r])/g,'\r\t');
1046 			elem.value=val.substr(0,sel-1)+rep+val.substr(elem.selectionEnd-1);
1047 		}else{
1048 			elem.value=val.substr(0,sel)+'\t'+val.substr(elem.selectionEnd);
1049 			elem.selectionStart=elem.selectionEnd=sel+1;
1050 		}
1051 		elem.scrollTop=n;
1052 		return false;
1053 	}
1054 }
1055 
1056 function linkSpan(link,blank)
1057 {
1058 	if(blank)
1059 		window.open(link.replace("_","http://"));
1060 	else
1061 		self.location.replace(link.replace("_","http://"));
1062 }
1063 'use strict';
1064 
1065 Object.prototype.clone=function(){
1066 /**Рекурсивно клонирует объект.*/
1067 	return clone(this);
1068 }
1069 
1070 Object.prototype.makeAllPropertiesNotEnumerable=function(){
1071 /**Сделать все свойства объекта неперечислимыми.*/
1072 	for(var chto in this)
1073 		Object.defineProperty(this, chto, {enumerable: false});
1074 }
1075 
1076 Object.prototype.cloneNonRecursive=function(){
1077 /**Нерекурсивно клонирует объект.*/
1078 	var a={};
1079 	for(var chto in this)
1080 		a[chto]=this[chto];
1081 	return a;
1082 }
1083 
1084 Object.prototype.addToGlobal=function(glname,p1){
1085 /**Добавляет все перечислимые свойства объекта в глобальную переменную и, если p1, то делает их в объекте неперечислимыми.*/
1086 	if(window[glname]===undefined)
1087 		window[glname]={};
1088 	for(var chto in this){
1089 		window[glname][chto]=this[chto];
1090 		if(p1)
1091 			Object.defineProperty(this, chto, {enumerable: false});
1092 	}
1093 	return this;
1094 }
1095 
1096 Object.prototype.importFrom=function(p1){
1097 /**Импортировать все свойства p1 в данный объект*/
1098 	if(p1)
1099 		for(var chto in p1)
1100 			this[chto]=p1[chto];
1101 }
1102 
1103 Object.prototype.NaNtoUndefined=function(r){
1104 	for(var chto in this){
1105 		if(this[chto]!==undefined && this[chto].isNumber && isNaN(this[chto])){
1106 			this[chto]=undefined;
1107 		}else if(r && this[chto].isObject){
1108 			this[chto].NaNtoUndefined();
1109 		}
1110 	}
1111 }
1112 
1113 Object.prototype.isObject=true;
1114 
1115 Object.prototype.addToGlobal('docsObject',1);
1116 'use strict';
1117 Array.prototype.shuffle = function(b){
1118 /**Перемешивает массив случайным образом. Если b, то ещё и рекурсивно на один уровень.*/
1119 	var i = this.length, j, t;
1120 	while(i) 
1121 	{
1122 		j=((i--)*Math.random() ).floor();
1123 		t=b && typeof this[i].shuffle!=='undefined' ? this[i].shuffle() : this[i];
1124 		this[i]=this[j];
1125 		this[j]=t;
1126 	}
1127 	return this;
1128 };//за основу взят пример с tigir.com 
1129 
1130 Array.prototype.soed=function(){
1131 /**"Склеивает" массив в строку без разделителей*/
1132 	return this.join('');
1133 };
1134 
1135 Array.prototype.sum=function(){
1136 /**Находит сумму элементов числового массива. Если есть нечисловые элементы, они не учитываются.*/
1137 	var a=0;
1138 	var b=this.length;
1139 	for(var i=0;i<b;i++){
1140 		if((this[i]>0)||(this[i]<0)){
1141 			a+=this[i];
1142 		}
1143 	}
1144  return a;
1145 };
1146 
1147 Array.prototype.sumObj=function(){
1148 /**Находит сумму массива чисел или матриц.*/
1149 	var a=0;
1150 	var b=this.length;
1151 	for(var i=0;i<b;i++){
1152 		a=objSum(a,this[i]);
1153 	}
1154  return a;
1155 };
1156 
1157 Array.prototype.umnObj=function(){
1158 /**Находит произведение массива чисел или матриц.*/
1159 	var a=1;
1160 	var b=this.length;
1161 	for(var i=0;i<b;i++){
1162 		a=objUmn(a,this[i]);
1163 	}
1164  return a;
1165 };
1166 
1167 Array.prototype.min=function(f){
1168 /**Индекс минимального элемента числового массива. Если f, то первого, иначе последнего.*/
1169 	var i;
1170 	var m=0;
1171 	if(f){
1172 		for(i=this.length;i;i--)
1173 			if(this[i]<=this[m])
1174 				m=i;
1175 	}else
1176 		for(i=this.length;i;i--)
1177 			if(this[i]<this[m])
1178 				m=i;
1179 	return m;
1180 }
1181 
1182 Array.prototype.max=function(f){
1183 /**Индекс максимального элемента числового массива. Если f, то первого, иначе последнего.*/
1184 	var i;
1185 	var m=0;
1186 	if(f){
1187 		for(i=this.length;i;i--){
1188 			if(this[i]>=this[m]){
1189 				m=i;
1190 			}
1191 		}
1192 	}else{
1193 		for(i=this.length;i;i--){
1194 			if(this[i]>this[m]){
1195 				m=i;
1196 			}
1197 		}
1198 	}
1199 	return m;
1200 }
1201 
1202 Array.prototype.minE=function(){
1203 /**Минимальный элемент числового массива.*/
1204 	return this[this.min()];
1205 }
1206 
1207 Array.prototype.maxE=function(){
1208 /**Максимальный элемент числового массива.*/
1209 	return this[this.max()];
1210 }
1211 
1212 Array.prototype.toStandart=function(){
1213 /**Преобразует каждый элемент массива (строку или число) в строку, записанную "по стандарту".*/
1214 	var len=this.length-1;
1215 	for(;len+1;len--){
1216 		this[len]=this[len].toStandart();
1217 	}
1218 }
1219 
1220 Array.prototype.iz=function(p1){
1221 /**Если p1 опущено, возвращает случайный элемент массива, иначе последовательность p1 неповторяющихся элементов массива.*/
1222 	if(p1)
1223 		return sluchiz(this,p1);
1224 	else
1225 		return this[sl(0,this.length-1)];
1226 }
1227 
1228 Array.prototype.tr=function(p1,p2){
1229 /**Возвращает строку таблицы с записанными в неё элементами массива.
1230 	p1 и p2 позволяют выбрать тэги, отличные от td и tr соотв.*/
1231 	var len=this.length-1;
1232 	var str='';
1233 	for(;len+1;len--){
1234 		str=this[len].vTag(p1?p1:'td')+str;
1235 	}
1236 	return str.vTag(p2?p2:'tr');
1237 }
1238 
1239 Array.prototype.zapslch=function(m,n,p1,p2,p3){
1240 /**Присваивает элементам с m по n случайные значения от p1 до p2 с шагом генерации p3. p2 и p3 можно опускать, как в sluchch()*/
1241 	for(;m<=n;m++)
1242 		this[m]=sluchch(p1,p2,p3);
1243 	return this;
1244 }
1245 
1246 Array.prototype.N=function(p1,p2){
1247 /**Присваивает p1 первым элементам массива значения натурального ряда, умноженные на p2, если p2 не ноль*/
1248 	for(var i=0;i<p1;this[i++]=(p2?i*p2:i)){};
1249 	this.length=p1;
1250 	return this;
1251 }
1252 
1253 Array.prototype.sluchiz=function(n){
1254 /**Возвращает массив из p1 неповторяющихся элементов массива.*/
1255 	return sluchiz(this,n);
1256 }
1257 
1258 Array.prototype.malRazn=function(n,s,p){
1259 /**Заполняет массив значениями, каждое из к-рых отличается от предыдущего не более, чем на s*p, и притом с шагом дискретизации s
1260  n - сколько элементов добавляем
1261  s - шаг изменения
1262  p - максимальное количество шагов изменения (в обе стороны)
1263 */
1264 	for(var i=1;i<=n;i++)
1265 		this[i]=this[i-1]+s*sluchch(-p,p);
1266 	return this;
1267 }
1268 
1269 Array.prototype.pervSovp=function(p1){
1270 /**Возвращает индекс первого элемента, совпавшего с данным, и -1, если таких элементов нет*/
1271 	for(var i=0;i<this.length;i++)
1272 		if(this[i]==p1)
1273 			return i;
1274 	return -1;
1275 }
1276 
1277 Array.prototype.poslSovp=function(p1){
1278 /**Возвращает индекс последнего элемента, совпавшего с данным, и -1, если таких элементов нет*/
1279 	for(var i=this.length-1;i>=0;i--)
1280 		if(this[i]==p1)
1281 			return i;
1282 	return -1;
1283 }
1284 
1285 Array.prototype.sovp=function(p1){
1286 /**Возвращает количество элементов, совпавших с данным, и 0, если таких элементов нет*/
1287 	var s=0;
1288 	for(var i=this.length-1;i>=0;i--)
1289 		if(this[i]==p1)
1290 			s++;
1291 	return s;
1292 }
1293 
1294 Array.prototype.toFixedLess=function(p1){
1295 /**Возвращает массив, в котором каждый элемент - строка, содержащая соттв. элемент данного, округлённый до p1 цифр после запятой*/
1296 	var a=[];
1297 	var len=this.length;
1298 	for(var i=0;i<len;i++)
1299 		a[i]=this[i].toFixedLess(p1);
1300 	return a;
1301 }
1302 
1303 Array.prototype.dopFixedLess=function(p1){
1304 /**Дополняет массив элементами, округлёнными до p1 цифр после запятой и представленными в виде строк*/
1305 	var len=this.length;
1306 	for(var i=0;i<len;i++)
1307 		this[i]=[this[i],this[i].toFixedLess(p1)];
1308 	return this;
1309 }
1310 
1311 Array.prototype.T=function(){
1312 /**Возвращает транспонированный массив*/
1313 	var l1=this.length;
1314 	var l2=0;
1315 	for(var i=0;i<l1;i++)
1316 		if(this[i].length>l2)
1317 			l2=this[i].length;
1318 	var a=[];
1319 	for(i=0;i<l2;i++)
1320 		a[i]=[];
1321 	for(i=0;i<l1;i++)
1322 		for(var j=0;j<l2;j++)
1323 			a[j][i]=this[i][j];
1324 	return a;
1325 }
1326 
1327 Array.prototype.zapMonot=function(n,a,minD,maxD,shag){
1328 /**Заполняет массив монотонно возрастающими или убывающими числами.
1329 a - нулевой (начальный) элемент массива.
1330 n - количество элементов
1331 Каждый следующий элемент массива отличается от предыдущего не менее, чем на minD и не более, чем maxD, с шагом shag*/
1332 	this[0]=a;
1333 	for(var i=1;i<n;i++)
1334 		this[i]=this[i-1]+sluchch(minD,maxD,shag);
1335 	return this;
1336 }
1337 
1338 Array.prototype.udFunc=function(f1){
1339 /**Количество элементов, удовлетворяющих в качестве параметра функции, возвращающей 0 или 1. Дикий костыль.*/
1340 	return this.map(f1).sum();
1341 }
1342 
1343 Array.prototype.kolvoMzhd=function(min,max,vkl){
1344 /**Возвращает кол-во чисел в массиве, лежащих между min и max, если vkl, то включительно*/
1345 	return this.udFunc(function(p1){
1346 		return vkl?p1>=min&&p1<=max:p1>min&&p1<max;
1347 	});
1348 }
1349 
1350 Array.prototype.isArray=true;
1351 
1352 Array.prototype.mn_plus=function(p1){
1353 /**Прибавляет к массиву коэффициентов многочлена, записанных по возрастанию степеней, другой такой массив.
1354 Текущий массив не изменяет!
1355 */
1356 	var b=this.slice()
1357 	if(p1.isNumber){
1358 		b[0]+=p1;
1359 		return b;
1360 	}
1361 	if(!p1.isArray)
1362 		return this;
1363 	if(p1.length>this.length)
1364 		return p1.mn_plus(this);
1365 
1366 	var len=p1.length;
1367 	for(var i=0; i<len;i++)
1368 		b[i]+=p1[i];
1369 	return b;
1370 }
1371 
1372 Array.prototype.mn_umn=function(p1){
1373 /**Умножает массив коэффициентов многочлена, записанных по возрастанию степеней, на другой такой массив.
1374 Текущий массив не изменяет!
1375 */
1376 	var b=this.slice()
1377 	if(p1.isNumber){
1378 		return this.map(function(p2){return p1*p2;});
1379 	}
1380 	if(!p1.isArray){
1381 		return this;
1382 	}
1383 	if(p1.length>this.length){
1384 		return p1.mn_umn(this);
1385 	}
1386 	var c=p1.slice()
1387 	var d=[];
1388 	var len=p1.length;
1389 	for(var i=0; i<len;i++){
1390 		d=d.mn_plus(b.mn_umn(p1[i]));
1391 		b.unshift(0);
1392 	}
1393 	return d;
1394 }
1395 
1396 Array.prototype.slag=function(){
1397 /**Перемешивает массив в случайном порядке и радостно соединяет плюсиками.*/
1398 	return this.shuffle().join('+');
1399 }
1400 
1401 Array.prototype.addPrefix=function(p1){
1402 /**Добавляет к каждому элементы массива префикс p1.
1403 Текущий массив не изменяет!*/
1404 	return this.map(function(p2){return p1+p2;});
1405 }
1406 
1407 Array.prototype.toSum=function(a){
1408 /**Возвращает массив, элементы которого пропорциональны элементам данного, но их сумма равна a или 1, если a не указано*/
1409 	if(a==undefined)
1410 		a=1;
1411 	var s=this.sum();
1412 	return this.map(function(p1){return a*p1/s});
1413 }
1414 
1415 Array.prototype.sumPyram=function(){
1416 /**Присваивает каждому элементу массива значение суммы всех предыдущих*/
1417 	for(var i=1;i<this.length;i++)
1418 		this[i]+=this[i-1];
1419 	return this;
1420 }
1421 
1422 Array.prototype.sVeroyatn=function(){
1423 /**Возвращает номер элемента массива с вероятностью, пропорциональной значению элемента*/
1424 	var th=this.toSum().sumPyram();
1425 	var a=Math.random();
1426 	var i;
1427 	for(i=0; a>th[i] && i<th.length ;i++){};
1428 	return i;
1429 }
1430 
1431 Array.prototype.hasElem=function(a){
1432 /**Определяет, есть ли в массиве заданный элемент*/
1433 	return this.some(function(p1){
1434 		return p1==a;
1435 	});
1436 }
1437 
1438 Array.prototype.hasElemStrict=function(a){
1439 /**Определяет, есть ли в массиве заданный элемент - строго, с точностью до совпадения типов*/
1440 	return this.some(function(p1){
1441 		return p1===a;
1442 	});
1443 }
1444 
1445 Array.prototype.matrToVect=function(n){
1446 /**Раскладывает m-мерный массив в (m-n)-мерный. Если n не указано, то принимается равным 1.*/
1447 	if(n>1)
1448 		return this.matrToVect(n-1).matrToVect();
1449 	else{
1450 		var rez=[];
1451 		var len=this.length;
1452 		for(var i=0;i<len;i++){
1453 			rez=rez.concat(this[i]);
1454 		}
1455 		return rez;
1456 	}
1457 }
1458 
1459 Array.prototype.ob$=function(){
1460 /**Возвращает массив, в котором элементы данного приведены к строкам и окружены символами $ (начало или конец формулы)*/
1461 	return this.map(function(p1){
1462 		return (''+p1).ob$();
1463 	});
1464 }
1465 
1466 Array.prototype.sortDelDubl=function(p1){
1467 /**Отсортировать копию массива по функции p1 (может быть опущена) и удалить дублирующиеся элементы*/
1468 	if(this===[])
1469 		return [];
1470 	var a=this.slice().sort(p1);
1471 	for(var i=0;i<a.length;i++)
1472 		if(a[i]==a[i+1])
1473 			a.splice(i--,1);
1474 	return a;
1475 }
1476 
1477 Array.prototype.hasDubl=function(){
1478 /**Есть ли в массиве дублирующиеся элементы*/
1479 	if(this===[])
1480 		return 0;
1481 	var a=this.slice().sort();
1482 	for(var i=0;i<a.length;i++)
1483 		if(a[i]==a[i+1])
1484 			return 1;
1485 	return 0;
1486 }
1487 
1488 Array.prototype.matrixToTex=function(){
1489 /**Возвращает строку - представление массива как матрицы в TeX-нотации.*/
1490 	if(this==[])
1491 		return '';
1492 	return '\\begin{array}{c}'+
1493 		this.map(function(p1){
1494 			return p1.isArray?
1495 				p1.join(' & '):
1496 				p1;
1497 		}).join('\\\\')+
1498 		'\\end{array}';
1499 }
1500 
1501 Array.prototype.det=function(){
1502 /**Функция-обёртка. Возвращает определитель матрицы.*/
1503 	return Determinant(this);
1504 }
1505 
1506 Array.prototype.inv=function(){
1507 /**Функция-обёртка. Возвращает обратную матрицу.*/
1508 	return InverseMatrix(this);
1509 }
1510 
1511 Array.prototype.allStrToNum=function(){
1512 /**Все строки, встречающиеся в массиве, превратить в числа (если получится).
1513 Исходный массив не изменяет.*/
1514 	return this.slice().map(function(elem){
1515 		if(elem.isNumber)
1516 			return elem;
1517 		if(elem.isArray)
1518 			return elem.allStrToNum();
1519 		if(elem.isString)
1520 			return elem.toNumberExt();
1521 		return 0;
1522 	});
1523 }
1524 
1525 Array.prototype.isLNez=function(){
1526 /**Является ли система строк матрицы линейно независимой.*/
1527 	var len=this.length;
1528 	if(len<this[0].length){
1529 		return this.T().isLNez();
1530 	}
1531 	if(len==this[0].length){
1532 		return !!this.det();
1533 	}
1534 	for(var i=0;i<len;i++){
1535 		var buf=this.slice();
1536 		buf.splice(i,1);
1537 		if(buf.isLNez())
1538 			return 1;
1539 	}
1540 	return 0;
1541 }
1542 
1543 Array.prototype.testSLU=function(a,b,tochnost){
1544 /**Является ли данный вектор решением СЛУ с матрицей a и столбцом свободных членов b
1545 с точностью tochnost (всё-таки с float-ами фактически работаем).*/
1546 	if(tochnost===undefined){
1547 		tochnost=1e-5;
1548 	}
1549 	var len=a.length;
1550 	if(!b){
1551 		b=generateMatrix(len,1,0,0);
1552 	}
1553 
1554 	b=b.allStrToNum();
1555 	a=a.allStrToNum();
1556 
1557 	for(var i=0;i<len;i++){
1558 		if( Math.abs( objUmn( [a[i]], this )[0][0]
1559 			- b[i][0] ) > tochnost ){
1560 			return 0;
1561 		}
1562 	}
1563 	return 1;
1564 }
1565 
1566 Array.prototype.rk=function(){
1567 /**Ранг матрицы. Функция-обёртка над rang_mat*/
1568 	return rang_mat(this);
1569 }
1570 
1571 Array.prototype.isFSR=function(a){
1572 /**Является ли данная матрица, в которой векторы - столбцы, ФСР для СЛОУ с матрицей a.*/
1573 	var t=this.T();
1574 	var len=t.length;
1575 
1576 	a=a.allStrToNum();
1577 	t=t.allStrToNum();
1578 
1579 	if(!t.isLNez())
1580 		return 0;
1581 	if(a[0].length-a.rk() != len)
1582 		return 0;
1583 
1584 	for(var i=0;i<len;i++){
1585 		if(![t[i]].T().testSLU(a))
1586 			return 0;
1587 	}
1588 	return 1;
1589 }
1590 
1591 Array.prototype.isNullVect=function(){
1592 /**Является ли вектор нулевым*/
1593 	var len=this.length;
1594 	for(var i=0;i<len;i++)
1595 		if(this[i])
1596 			return 0;
1597 	return 1;
1598 }
1599 
1600 Array.prototype.hasNullVect=function(){
1601 /**Есть ли в матрице нулевые векторы - строки или столбцы?*/	
1602 	var len=this.length;
1603 	for(var i=0;i<len;i++)
1604 		if(this[i].isNullVect())
1605 			return 1;
1606 	var th=this.T();
1607 	len=th.length;
1608 	for(var i=0;i<len;i++)
1609 		if(th[i].isNullVect())
1610 			return 1;
1611 	return 0;
1612 }
1613 
1614 Array.prototype.copyAr=function() {
1615 /**Если массив содержит вложенные, slice не подходит*/
1616 	var ar = [];
1617 	for (var i=0; i<this.length; i++){
1618 		if (Array.isArray(this[i])){
1619 			ar[i] = this[i].copyAr();
1620 		}
1621 		else {
1622 			ar[i] = this[i];
1623 		}
1624 	}
1625 	return ar;
1626 }
1627 
1628 Array.prototype.equalAr=function(x1) {
1629 /**Возвращает, равны ли this и x1*/
1630 	var f=true;
1631 	if (x1.length==this.length){
1632 		var i=0;
1633 		while (i<x1.length && f) {
1634 			f=f&&(x1[i]==this[i]);
1635 			i++;
1636 		}
1637 		return(f);
1638 	}
1639 	else return false;
1640 }
1641 
1642 Array.prototype.reverseElems=function(recursive){
1643 	return this.map(function(p1){
1644 		return recursive && p1.reverseElems ? p1.reverseElems(1) : p1.reverse();
1645 	});
1646 }
1647 
1648 Array.prototype.hasCommon=function(arr){
1649 /**Имеет ли данный массив и arr общие элементы?*/
1650 	var len=arr.length;
1651 	for(var i=0; i<len; i++)
1652 		if(this.hasElem(arr[i]))
1653 			return 1;
1654 		return 0;
1655 }
1656 
1657 Array.prototype.delEmpty=function(){
1658 /**Удалить из массива пустые строки и undefined*/
1659 	var len=this.length;
1660 	for(var i=0;i<len;i++){
1661 		if(this[i]===undefined || this[i]==""){
1662 			this.splice(i,1);
1663 			len--;
1664 			i--;
1665 		}
1666 	}
1667 }
1668 
1669 Array.prototype.trimStrings=function(){
1670 /**Для каждой строки-элемента массива вызвать .trim()*/
1671 	var len=this.length;
1672 	for(var i=0;i<len;i++){
1673 		this[i]=this[i].trim();
1674 	}
1675 }
1676 
1677 Array.prototype.replaceStrings=function(p1,p2){
1678 /**Для каждой строки-элемента массива вызвать .replace(p1,p2)*/
1679 	var len=this.length;
1680 	for(var i=0;i<len;i++){
1681 		this[i]=this[i].replace(p1,p2);
1682 	}
1683 }
1684 
1685 Array.prototype.delDublByProp=function(prop){
1686 /**Удаление элементов массива, у которых свойства из массива строк prop совпадают с ранее рассмотренными.*/
1687 	var rez=this.slice();
1688 	rez=rez.sortBy(prop);
1689 	var len=rez.length;
1690 	var p=prop.length;
1691 	for(var i=1;i<len;i++){
1692 		if(!compareObjects(rez[i-1],rez[i],prop)){
1693 			rez.splice(i,1);
1694 			len--;
1695 			i--;
1696 		}
1697 	}
1698 	return rez;
1699 }
1700 
1701 Array.prototype.sortNumeric=function(){
1702 /**Сортировка численного массива.*/
1703 	return this.sort(function(a,b){
1704 		return a-b;
1705 	});
1706 }
1707 
1708 Array.prototype.sortNumericArr=function(){
1709 /**Сортировка массива числовых массивов по первому элементу.*/
1710 	return this.sort(function(a,b){
1711 		return a[0]-b[0];
1712 	});
1713 }
1714 
1715 Array.prototype.sortBy=function(prop){
1716 /**Сортировка элементов массива по списку свойств prop, где prop - массив строк.*/
1717 	return this.sort(function(a,b){
1718 		return compareObjects(a,b,prop);
1719 	});
1720 	
1721 }
1722 
1723 Array.prototype.getVariety=function(prop){
1724 /**Возвращает массив значений выбранного свойства элементов-объектов исходного массива.*/
1725 	var len=this.length;
1726 	var rez=[];
1727 	for(var i=0;i<len;i++){
1728 		if(this[i][prop]!==undefined){
1729 			if(this[i][prop].isArray){
1730 				rez=rez.concat(this[i][prop]);
1731 			}else{
1732 				rez.push(this[i][prop]);
1733 			}
1734 		}
1735 	}
1736 	return rez.sortDelDubl();
1737 }
1738 
1739 Array.prototype.addToGlobal('docsArray',1);
1740 'use strict';
1741 
1742 Array.prototype.mt_prov=function(kolvo){
1743 /**Проверяет, можно ли трактовать каждый элемент массива как точку, т. е.
1744 у каждого ли элемента массива есть свойства x и y,
1745 и, если kolvo, то есть ли в данном массиве kolvo точек.*/
1746 	if(this.length<kolvo)
1747 		return 0;
1748 	var fl=true;
1749 	var len=this.length-1;
1750 	for(;(len+1) && fl;len--)
1751 		fl=fl&&(this[len].x!=undefined)&&(this[len].y!=undefined);
1752 	return fl;
1753 };
1754 
1755 Array.prototype.mt_s3ug=function(){
1756 /**Площадь треугольника, вершины которого - первые три элемента массива точек.*/
1757 	if(!this.mt_prov(3))
1758 		return 0;
1759 	return 0.5*(this[0].x*this[1].y+this[0].y*this[2].x+this[1].x*this[2].y-this[1].y*this[2].x-this[2].y*this[0].x-this[0].y*this[1].x).abs();
1760 };
1761 
1762 Array.prototype.mt_tgUnakl=function(){
1763 /**Возвращает тангенс угла наклона прямой, проходящей через две первые точки массива.*/
1764 	if(!this.mt_prov(2))
1765 		return undefined;
1766 	if(!(this[0].y-this[1].y))
1767 		return 0;
1768 	return (this[0].y-this[1].y)/(this[0].x-this[1].x);
1769 }
1770 
1771 Array.prototype.mt_is3ug=function(){
1772 /**Проверяет, образуют ли три данные точки треугольник. 
1773 Можно использовать и для того, чтобы выяснить, лежат ли три данные точки на одной прямой.*/
1774 	if(!this.mt_prov(3))
1775 		return 0;
1776 	return this.mt_tgUnakl()!=[this[1],this[2]].mt_tgUnakl();
1777 };
1778 
1779 Array.prototype.mt_uPeres=function(){
1780 /**Угол пересечения прямых, проходящих через первые две пары точек.*/
1781 	if(!this.mt_prov(4))
1782 		return 0;
1783 	var u=(this.mt_tgUnakl().atan()-[this[2],this[3]].mt_tgUnakl().atan()).abs();
1784 	for(;u>=Math.PI;u=u-Math.PI){};
1785 	for(;u>Math.PI/2;u=Math.PI-u){};
1786 	return u;
1787 };
1788 
1789 Array.prototype.mt_isMnug=function(p1){
1790 /**Проверяет, задаёт ли массив точек p1-угольник.
1791 При вызове без параметра - многоугольник.*/
1792 	if(
1793 			(p1!=undefined)&&(this.length!=p1)
1794 		||	(!this.mt_prov(3))
1795 		||	(this.mt_dubli())
1796 		||	(this.mt_estSamoper())
1797 		){
1798 			return 0;
1799 	}
1800 	
1801 	var len=this.length-1;
1802 	var fl=1;
1803 	
1804 	fl*=[this[0],this[len],this[len-1]].mt_is3ug();
1805 	fl*=[this[0],this[1],this[len]].mt_is3ug();
1806 	for(;len-1;len--)
1807 		fl*=[this[len],this[len-1],this[len-2]].mt_is3ug();
1808 
1809 	return fl;
1810 };
1811 
1812 Array.prototype.mt_rasst=function(){
1813 /**Расстояние между двумя первыми точками массива.*/
1814 	if(!this.mt_prov(2))
1815 		return undefined;
1816 	return ((this[0].x-this[1].x).pow(2)+(this[0].y-this[1].y).pow(2)).sqrt();
1817 };
1818 
1819 Array.prototype.mt_s4ug=function(){
1820 /**Площадь четырёхугольника.*/
1821 	if(!this.mt_isMnug(4))
1822 		return undefined;
1823 	return 0.5*[this[0],this[2]].mt_rasst()*[this[1],this[3]].mt_rasst()*
1824 		[this[0],this[2],this[1],this[3]].mt_uPeres().sin();
1825 };
1826 
1827 Array.prototype.mt_dubli=function(){
1828 /**Есть ли в массиве повторяющиеся точки*/
1829 	if(!this.mt_prov())
1830 		return undefined;
1831 	var len;
1832 	var l2;
1833 	for(len=this.length-1;len+1;len--)
1834 		for(l2=this.length-1;l2>len;l2--)
1835 			if(this[len].x==this[l2].x&&this[len].y==this[l2].y)
1836 				return 1;
1837 	return 0;
1838 };
1839 
1840 Array.prototype.mt_pryam=function(){
1841 /**Возвращает коэффициенты a и b прямой y=ax+b, проходящей через две первые точки.*/
1842 	if(!this.mt_prov(2))
1843 		return undefined;
1844 	var a=this.mt_tgUnakl();
1845 	if(a.abs()==Infinity)
1846 		var b=this[0].x;
1847 	else
1848 		var b=this[0].y-a*this[0].x;
1849 	return {a:a,b:b};
1850 };
1851 
1852 Array.prototype.mt_join=function(p1){
1853 /**Возращает строку - координаты точек через запятую.*/
1854 	if(!this.mt_prov())
1855 		return undefined;
1856 	if(!p1)
1857 		p1=', ';
1858 	var p2='';
1859 	var len=this.length-1;
1860 	for(var l2=0;l2<len;l2++)
1861 		p2+='('+this[l2].x+'; '+this[l2].y+')'+p1;
1862 	p2+='('+this[l2].x+'; '+this[l2].y+')';
1863 	return p2;
1864 }
1865 
1866 Array.prototype.mt_otrPeres=function(){
1867 /**Количество точек пересечения двух отрезков, задаваемых первыми парами точек.*/
1868 	if(!this.mt_prov())
1869 		return undefined;
1870 	var p1=[[this[0],this[1]].mt_pryam(),[this[2],this[3]].mt_pryam()].mp_tPeres();
1871 	if(p1.x==Infinity)
1872 		return Infinity;
1873 	else if(p1.x.mzhd(this[0].x,this[1].x,1)&&p1.x.mzhd(this[2].x,this[3].x,1)&&p1.y.mzhd(this[0].y,this[1].y,1)&&p1.y.mzhd(this[2].y,this[3].y,1))
1874 		return 1;
1875 	return 0;
1876 }
1877 
1878 Array.prototype.mt_estSamoper=function(){
1879 /**Имеет ли ломанная, образованная точками, самопересечения.*/	
1880 	if(!this.mt_prov(3))
1881 		return undefined;
1882 	var len=this.length;
1883 	var th=this.concat(this,this);
1884 	var fl=0;
1885 	for(var l1=0;l1<len;l1++)
1886 		for(var l2=l1+2;l2<=l1+len-2;l2++)
1887 			fl+=[th[l1],th[l1+1],th[l2],th[l2+1]].mt_otrPeres();
1888 	return fl;
1889 }
1890 
1891 Array.prototype.mt_ladMnug=function(){
1892 /**Перемешивать точки до тех пор, пока не получится многоугольник.*/
1893 	if(		(!this.mt_prov(3))
1894 		||	(this.mt_dubli())
1895 	)
1896 		return 0;
1897 	
1898 	for(;!this.mt_isMnug();this.shuffle()){};
1899 	//Крайне криво, но думать лень.
1900 	return this;
1901 }
1902 
1903 Array.prototype.mt_perpend=function(){
1904 /**Перпендикулярны ли прямые, задаваемые первыми двумя парами точек.*/
1905 	return (this.mt_uPeres()==Math.PI/2);
1906 }
1907 
1908 Array.prototype.mt_paral=function(){
1909 /**Параллельны ли прямые, задаваемые первыми двумя парами точек.*/
1910 	return this.mt_uPeres()==0;
1911 }
1912 
1913 Array.prototype.mt_imen4ug=function(){
1914 /**Называет четырёхугольник.*/
1915 	if(!this.mt_isMnug(4)){return 0;};
1916 	var A=this[0];
1917 	var B=this[1];
1918 	var C=this[2];
1919 	var D=this[3];
1920 	var prug=	([A,B,B,C].mt_perpend())&&
1921 				([B,C,C,D].mt_perpend())&&
1922 				([A,D,D,C].mt_perpend());
1923 	var rstor=	([A,B].mt_rasst()==[A,D].mt_rasst())*
1924 				([C,B].mt_rasst()==[C,D].mt_rasst())+
1925 				([B,A].mt_rasst()==[B,C].mt_rasst())*
1926 				([D,A].mt_rasst()==[D,C].mt_rasst());
1927 	var paral=	([A,B,C,D].mt_paral())+
1928 				([A,D,B,C].mt_paral());
1929 	if(prug&&(rstor==2))
1930 		return lx['квадрат'];
1931 	else if(prug)
1932 		return lx['прямоугольник'];
1933 	else if(rstor==2)
1934 		return lx['ромб'];
1935 	else if(paral==2)
1936 		return lx['параллелограмм'];
1937 	else if(paral==1)
1938 		return lx['трапеция'];
1939 	else if(rstor==1)
1940 		return lx['дельтоид'];
1941 	else
1942 		return lx['четырёхугольник'];
1943 };
1944 
1945 Array.prototype.addToGlobal('docsArray',1);
1946 'use strict';
1947 
1948 Array.prototype.mp_prov=function(){
1949 /**Проверяет, можно ли трактовать массив как массив прямых, 
1950 т. е. у каждого ли элемента массива есть свойства a и b*/
1951 	var fl=true;
1952 	var len=this.length-1;
1953 	for(;(len+1)&&fl;len--)
1954 		fl=fl&&(this[len].a!=undefined)&&(this[len].b!=undefined);
1955 	return fl;
1956 }
1957 
1958 Array.prototype.mp_tPeres=function(){
1959 /**Находит точку пересечения первых двух прямых.*/
1960 	if(!this.mp_prov())
1961 		return undefined;
1962 	
1963 	var x;
1964 	var y;
1965 	if(this[0].a.abs()==Infinity){
1966 		x=this[0].b;
1967 		y=this[1].a*x+this[1].b;
1968 	}else if(this[1].a.abs()==Infinity){
1969 		x=this[1].b;
1970 		y=this[0].a*x+this[0].b;
1971 	}else{
1972 		var c=this[1].a-this[0].a;
1973 		if(c==0)
1974 			if(this[0].b==this[1].b)
1975 				x=y=Infinity;
1976 			else
1977 				x=y=NaN;
1978 		else{
1979 			x=(this[0].b-this[1].b)/(this[1].a-this[0].a);
1980 			y=this[0].a*x+this[0].b;
1981 		}
1982 	}	
1983 	return {x:x,y:y};
1984 }
1985 
1986 Array.prototype.addToGlobal('docsArray',1);
1987 'use strict';
1988 Array.prototype.mn_proizv=function(){
1989 /**Находит производную от многочлена, коэфф. которого в порядке возрастания степеней - элементы данного массива.*/
1990 	var len=this.length;
1991 	var th=[];
1992 	for(var i=0;i<len-1;i++){
1993 		th[i]=clone(this[i+1]);
1994 		th[i]=Drob.fixN(th[i]);
1995 		th[i].ch=th[i].ch*(i+1);
1996 		Drob.sokr(th[i]);
1997 	}
1998 	return th;
1999 }
2000 
2001 Array.prototype.mn_vychisl=function(x){
2002 /**Находит значение многочлена, коэфф. которого в порядке возрастания степеней - элементы данного массива,
2003 при значении переменной, равном x*/
2004 	var len=this.length;
2005 	var s=0;
2006 	for(var i=0;i<len;i++){
2007 		this[i]=Drob.fixN(this[i]);
2008 		s+=this[i].ch*x.pow(i)/this[i].zn;
2009 	}
2010 	return s;
2011 }
2012 
2013 Array.prototype.mn_txt=function(x){
2014 /**TeX-представление многочлена, коэфф. которого в порядке возрастания степеней - элементы данного массива, x - символ переменной.*/
2015 	var len=this.length;
2016 	this[0]=Drob.fixN(this[0]);
2017 	var s=this[0].ch.frac(this[0].zn).esli(this[0].ch);
2018 	for(var i=1;i<len;i++){
2019 		this[i]=Drob.fixN(this[i]);
2020 		if(this[i].ch){
2021 			s= this[i].ch.frac(this[i].zn)+x+('^{'+i+'}').esli(i!=1)
2022 				+'+'+s;
2023 		}
2024 	}
2025 	return s.plusminus();
2026 }
2027 
2028 Array.prototype.mn_pervoobr=function(){
2029 /**Находит первообразную (C=0) от многочлена, коэфф. которого в порядке возрастания степеней - элементы данного массива.*/
2030 	var len=this.length;
2031 	var th=[0];
2032 	for(var i=1;i<len+1;i++){
2033 		th[i]=clone(this[i-1]);
2034 		th[i]=Drob.fixN(th[i]);
2035 		th[i].zn=th[i].zn*i;
2036 		Drob.sokr(th[i]);
2037 	}
2038 	return th;
2039 }
2040 
2041 Array.prototype.mn_txtmas=function(x){
2042 /**TeX-представление многочлена, коэфф. которого в порядке возрастания степеней - элементы данного массива, x - символ переменной, в виде массива выражений*/
2043 	var len=this.length;
2044 	this[0]=Drob.fixN(this[0]);
2045 	var s=[this[0].ch.frac(this[0].zn).esli(this[0].ch)];
2046 	for(var i=1;i<len;i++){
2047 		this[i]=Drob.fixN(this[i]);
2048 		if(this[i].ch){
2049 			s.push(this[i].ch.frac(this[i].zn)+x+('^{'+i+'}').esli(i!=1));
2050 		}
2051 	}
2052 	return s;
2053 }
2054 
2055 Array.prototype.addToGlobal('docsArray',1);
2056 'use strict';
2057 
2058 Array.prototype.pe_inv=function(){
2059 /**Количество инверсий в перестановке, образованной элементами массива.*/
2060 	var perest=0;
2061 	var len=this.length;
2062 	for(var i=0;i<len;i++)
2063 		for(var j=i;j<len;j++)
2064 			if(this[i]>this[j])
2065 				perest++;
2066 	return perest;
2067 }
2068 
2069 Array.prototype.pe_txt=function(){
2070 /**Перестановка, образованная элементами массива, в TeX-нотации.*/
2071 	return "$\\left("+this.join(";")+"\\right)$";
2072 }
2073 
2074 Array.prototype.addToGlobal('docsArray',1);
2075 'use strict';
2076 
2077 CanvasRenderingContext2D.prototype.drawLine=function(x1,y1,x2,y2){
2078 	this.beginPath();
2079 	this.moveTo(x1,y1);
2080 	this.lineTo(x2,y2);
2081 	this.stroke();
2082 	this.closePath();
2083 }
2084 
2085 CanvasRenderingContext2D.prototype.setka=function(s,n){
2086 	for(var i=-n;i<=n;i++){
2087 		this.drawLine(-s*n,s*i,s*n,s*i);
2088 		this.drawLine(s*i,-s*n,s*i,s*n);
2089 	}
2090 }
2091 
2092 CanvasRenderingContext2D.prototype.setkaXY=function(s,n1,n2,n3,n4){
2093 	for(var i=n1;i<=n2;i++){
2094 		this.drawLine(s*i,s*n3,s*i,s*n4);
2095 	}
2096 	for(i=n3;i<=n4;i++){
2097 		this.drawLine(s*n1,s*i,s*n2,s*i);
2098 	}
2099 }
2100 
2101 CanvasRenderingContext2D.prototype.fillKrug=function(x,y,r){
2102 	this.beginPath();
2103 	this.arc(x,y, r, 0, 2*Math.PI, false);
2104 	this.fill();
2105 }
2106 
2107 CanvasRenderingContext2D.prototype.drawLineSpec=function(x1,y1,x2,y2){
2108 	var m = (x1-x2);
2109 	var n = (y1-y2);
2110 	var k = (n/m);
2111 
2112 	if(x1==x2){
2113 		for(var iy = Math.min(y1,y2); iy < Math.max(y1,y2); iy += 14){
2114 			this.drawLine(x1,iy,x1,iy+7);
2115 		}
2116 	}
2117 
2118 	if(y1==y2){
2119 		for(var ix = Math.min(x1,x2); ix < Math.max(x1,x2); ix += 14){
2120 			this.drawLine(ix, y1, ix+7, y1);
2121 		}
2122 	}
2123 
2124 	if((x2>x1)&(y2>y1)){
2125 		for (var ix=x1+7; ix<x2; ix+=14){
2126 			this.drawLine(ix, y1+ix-x1, ix+7, y1+ix-x1+7);
2127 		}
2128 	}
2129 
2130 	if((x2>x1)&(y2<y1)){
2131 		for (var ix=x1+7; ix<x2; ix+=14){
2132 			this.drawLine(ix, y1-ix-x1, ix+7, y1-ix-x1-7);
2133 		}
2134 	}
2135 
2136 	if((x2<x1)&(y2<y1)){
2137 		for (var ix=x2+7; ix<x1; ix+=14){
2138 			this.drawLine(ix, y2+ix-x2, ix+7, y2+ix-x2+7);
2139 		}
2140 	}
2141 
2142 	if((x2<x1)&(y2>y1)){
2143 		for (var ix=x2+7; ix<x1; ix+=14){
2144 			this.drawLine(ix, y2-ix+x2, ix+7, y2-ix+x2-7);
2145 		}
2146 	}
2147 }
2148 
2149 CanvasRenderingContext2D.prototype.isCanvasRenderingContext2D=true;
2150 
2151 /*Иначе огнелисичка матюкается
2152 var docsCanvas;
2153 if(!docsCanvas)
2154 	docsCanvas={};
2155 
2156 for(var chto in CanvasRenderingContext2D.prototype){
2157 	docsCanvas[chto]=CanvasRenderingContext2D.prototype[chto];
2158 //	Object.defineProperty(CanvasRenderingContext2D.prototype, chto, { enumerable: false });
2159 }*/
2160 'use strict';
2161 Number.prototype.toFixedLess=function(n){
2162 /**Возвращает строку - предсиавление числа с не более чем n знаками после запятой.*/
2163 	var a=this.toFixed(n);
2164 	for(;a.posl()=='0'&&a.search(/[.]/)!=-1;a=a.udalPosl()){};
2165 	for(;a.posl()=='.';a=a.udalPosl()){};
2166 	return a;
2167 }
2168 
2169 Number.prototype.pm=function(){
2170 /**Случайным образом возвращает число или ему противоположное.*/
2171 	return sl1()?this:-this;
2172 }
2173 
2174 Number.prototype.dopdo=function(c,n){
2175 /**Возвращает строковое представление числа, дополненное спереди строками c до длины не менее n*/
2176 		return (''+this).dopdo(c,n);
2177 }
2178 
2179 Number.prototype.isZ=function(){
2180 /**Проверяет, является ли число целым.*/
2181 	return this-this.floor()==0;
2182 }
2183 
2184 Number.prototype.isPolnKvadr=function(){
2185 /**Проверяет, является ли число полным квадратом.*/
2186 	return this.sqrt().isZ();
2187 }
2188 
2189 Number.prototype.ts=
2190 Number.prototype.toStandart=function(p1){
2191 /**Возвращает представление числа в записи "по стандарту": с десятичной запятой и не более чем 10 знаками после неё.
2192 Для отсечения "ложной точности" хватает.*/
2193 	return this.toFixedLess(10).toStandart(p1);
2194 }
2195 
2196 Number.prototype.mzhd=function(a,b,c){
2197 /**Находится ли число между a и b, если c - то включительно. a и b можно не упорядочивать.*/
2198 	var p1=[a,b];
2199 	var p2=p1[p1.max()];
2200 	var p3=p1[p1.min()];
2201 	return (this<p2)&&(this>p3)||((this==p2)||(this==p3))&&(!!c);
2202 }
2203 
2204 Number.prototype.polozh=function(){
2205 /**Если число положительно, вернёт его, иначе 0.*/
2206 	return this<0?0:this;
2207 }
2208 
2209 Number.prototype.nod=function(p1){
2210 /**НОД данного числа и p1*/
2211 	var a,b;
2212 	a=this<0?-this:this;
2213 	b=p1<0?-p1:p1;
2214 	if(a==b) return a;
2215 	if((a==1)||(b==1))return 1;
2216 	if(a==0) return b;
2217 	if(b==0) return a;
2218 	if(a>b) return b.nod(a%b);
2219 			return a.nod(b%a);
2220 }
2221 
2222 Number.prototype.pina=function(p1){
2223 /**TeX-представление дроби, у которой в числителе данное число, умнолженное на пи, а в знаменателе p1.
2224 Случай p1=1 учитывается.*/
2225 	var a1={ch:this,zn:p1};
2226 	Drob.sokr(a1);
2227 	if(a1.ch==0)
2228 		return '0';
2229 	var z='';
2230 	if(a1.ch<0){
2231 		z='-';
2232 		a1.ch*=-1;
2233 	} 
2234 	return z+('\\frac{').esli(a1.zn!=1)+(a1.ch==1?'':a1.ch)+'\\pi'+('}{'+a1.zn+'}').esli(a1.zn!=1);
2235 }
2236 
2237 Number.prototype.koren=function(p1){
2238 /**TeX-представление корня из данного числа.
2239 Если данное число  полный квадрат, то само число.
2240 Если p1, то из-под корня будут вынесены возможные множители.*/
2241 	if(this.isPolnKvadr())
2242 		return this.ts();
2243 	var a='';
2244 	var t=this;
2245 	if(p1){
2246 		a=this.polnKvadrMnozh();
2247 		t=t/a.sqr();
2248 	}
2249 	return a+'\\sqrt{'+t.ts()+'}';
2250 }
2251 
2252 Number.prototype.polnKvadrMnozh=function(){
2253 /**Максимальный делитель данного числа, квадрат которого также является делителем данного числа.*/
2254 	if(this==0)
2255 		return 0;
2256 	var t=this.abs();
2257 	var i=1;
2258 	for(var rez=1;i.sqr()<=t;i++)
2259 		if(t.kratno(i.sqr()))
2260 			rez=i;
2261 	return rez;
2262 }
2263 
2264 Number.prototype.frac=function(p1){
2265 /**TeX-представление дроби, у которой в числителе данное число, а в знаменателе p1.
2266 Случай p1=1 учитывается.*/
2267 	var a1={ch:this,zn:p1};
2268 	if(p1.isString)
2269 		return ('\\frac{').esli(a1.zn!='1')+(a1.ch==1?'1':a1.ch)+('}{'+a1.zn+'}').esli(a1.zn!='1');
2270 	
2271 	Drob.sokr(a1);
2272 	if(a1.ch==0)return '0';
2273 	var z='';
2274 	if(a1.ch<0){
2275 		z='-';
2276 		a1.ch*=-1;
2277 	} 
2278 	return z+('\\frac{').esli(a1.zn!=1)+(a1.ch==1?'1':a1.ch)+('}{'+a1.zn+'}').esli(a1.zn!=1);
2279 	
2280 }
2281 
2282 Number.prototype.fracstr=function(p1,str){
2283 /**TeX-представление дроби с числителем - произведением данного числа и строки str и знаменателем p1.*/
2284 	var a1={ch:this,zn:p1};
2285 	if(p1.isString)
2286 		return 
2287 			a1.zn!=1?
2288 			'\\frac{'+a1.ch+str+'}{'+a1.zn+'}':
2289 			'{'+a1.ch+str+'}';
2290 	
2291 	Drob.sokr(a1);
2292 	if(!a1.ch)
2293 		return '0';
2294 	var z='';
2295 	if(a1.ch<0){
2296 		z='-';
2297 		a1.ch*=-1;
2298 	} 
2299 	return z+('\\frac{').esli(a1.zn!=1)+(a1.ch==1?str:a1.ch+str)+('}{'+a1.zn+'}').esli(a1.zn!=1);
2300 	
2301 }
2302 
2303 Number.prototype.kratno=function(p1){
2304 /**Кратно ли данное число p1*/
2305 	return !(this%p1);
2306 }
2307 
2308 Number.prototype.delit=function(p1){
2309 /**Является ли данное число делителем p1*/
2310 	return !(p1%this);
2311 }
2312 
2313 Number.prototype.sluchDel=function(){
2314 /**Возвращает случайный делитель числа.*/
2315 	for(var r=this+1;!this.kratno(r);r=sluchch(1,this)){};
2316 	return r; 
2317 }
2318 
2319 Number.prototype.toChMin=function(){
2320 /**Трактует число как количество минут и возвращает строку вида "A часов B минут".*/
2321 	var a=(this/60).floor();
2322 	var b=this%60;
2323 	return chislitlx(a,'час').esli(a)+' '.esli(a&&b)+chislitlx(b,'минута').esli(b);
2324 }
2325 
2326 Number.prototype.chislit=function(p1,p2,p3){
2327 /**Вспомогательная функция для согласования существительного с числительным.*/
2328 	return chislit(this,p1,p2,p3);
2329 }
2330 
2331 Number.prototype.chislitM=function(p1,p2,p3){
2332 /**Вспомогательная функция для согласования существительного с числительным.*/
2333 	return chislitM(this,p1,p2,p3);
2334 }
2335 
2336 Number.prototype.chislitlx=function(p1,p2){
2337 /**Возвращает строку, состоящую из данного числа и подходящего падежа слова p1, при этом
2338 полученное словосочетанию стоит в падеже p2 (есдли не указан - именительный).*/
2339 	return chislitlx(this,p1,p2);
2340 }
2341 
2342 Number.prototype.min=function(){
2343 /**Минимум из данного числа и всех аргументов функции.*/
2344 	var a=Array.prototype.slice.call(arguments);
2345 	a.push(this);
2346 	return a.minE();
2347 }
2348 
2349 Number.prototype.max=function(){
2350 /**Максиимум из данного числа и всех аргументов функции.*/
2351 	var a=Array.prototype.slice.call(arguments);
2352 	a.push(this);
2353 	return a.maxE();
2354 }
2355 
2356 Number.prototype.plusminus=Number.prototype.ts;
2357 
2358 Number.prototype.proporMezhdu=function(k,pr){
2359 /**Возвращает число, лежащее между данным и k пропорционально pr*/
2360 	return this+(k-this)*pr;
2361 }
2362 
2363 Number.prototype.toDvoet=function(a){
2364 /**Представить число в виде "часы-минуты" с двоеточием.*/
2365 	if(!a)
2366 		a=60;
2367 	return Math.floor(this/60)+':'+Math.floor(this%60).dopdo('0',2);
2368 }
2369 
2370 Number.prototype.okrugldo=function(p1){
2371 /**Округлить число до кратных p1*/
2372 	return okrugldo(this,p1);
2373 }
2374 
2375 Number.prototype.fct=function(){
2376 /**Факториал числа.*/
2377 	return this>0?(this-1).fct()*this:1;
2378 }
2379 
2380 Number.prototype.rub=function(){
2381 /**Возвращает строку вида this рублей*/
2382 	return chislitlx(this,'рубль');
2383 }
2384 
2385 Number.prototype.toComplex=function(){
2386 /**Представляет число в виде чисто действительного комплексного*/
2387 	return new Complex(this);
2388 }
2389 
2390 Number.prototype.isNumber=true;
2391 
2392 Number.prototype.addToGlobal('docsNumber',1);
2393 'use strict';
2394 
2395 Number.prototype.pow=function(n){
2396 /**Возвращает число в степени n*/
2397 	return Math.pow(this,n);
2398 }
2399 
2400 Number.prototype.sqrt=function(){
2401 /**Квадратный корень из числа.*/
2402 	return Math.sqrt(this);
2403 }
2404 
2405 Number.prototype.sqr=function(){
2406 /**Квадрат числа.*/
2407 	return Math.pow(this,2);
2408 }
2409 Number.prototype.abs=function(){
2410 /**Модуль числа.*/
2411 	return Math.abs(this);
2412 }
2413 
2414 Number.prototype.floor=function(){
2415 /**Округлить число до целых в меньшую сторону.*/
2416 	return Math.floor(this);
2417 }
2418 
2419 Number.prototype.ceil=function(){
2420 /**Округлить число до целых в большую сторону.*/
2421 	return Math.ceil(this);
2422 }
2423 
2424 Number.prototype.arctg=
2425 Number.prototype.atan=function(){
2426 /**Арктангенс числа.*/
2427 	return Math.atan(this);
2428 }
2429 
2430 Number.prototype.arcsin=
2431 Number.prototype.asin=function(){
2432 /**Арксинус числа.*/
2433 	return Math.asin(this);
2434 }
2435 
2436 Number.prototype.arccos=
2437 Number.prototype.acos=function(){
2438 /**Арккосинус числа.*/
2439 	return Math.acos(this);
2440 }
2441 
2442 Number.prototype.arcctg=function(){
2443 /**Аркотангенс числа.*/
2444 	return Math.atan(1/this);
2445 }
2446 
2447 Number.prototype.sin=function(){
2448 /**Синус числа.*/
2449 	return Math.sin(this);
2450 }
2451 
2452 Number.prototype.cos=function(){
2453 /**Косинус числа.*/
2454 	return Math.cos(this);
2455 }
2456 
2457 Number.prototype.tg=
2458 Number.prototype.tan=function(){
2459 /**Тангенс числа.*/
2460 	return Math.tan(this);
2461 }
2462 
2463 Number.prototype.ctg=function(){
2464 /**Котангенс числа.*/
2465 	return 1/Math.tan(this);
2466 }
2467 
2468 Number.prototype.round=function(){
2469 /**Округление числа до целых.*/
2470 	return Math.round(this);
2471 }
2472 
2473 Number.prototype.addToGlobal('docsNumber',1);
2474 'use strict';
2475 
2476 String.prototype.mesh=function(){
2477 /**Перемешивает строку посимвольно в случайном порядке*/
2478 	return this.split('').shuffle().soed();	
2479 };
2480 
2481 String.prototype.dopdo=function(c,n){
2482 /**Дополняет строку подстроками спереди, пока длина строки не станет не менее n.*/
2483 	var str=this;
2484 	for(;str.length<n;str=c+str){};
2485 	return str;
2486 };
2487 
2488 String.prototype.toZagl=function(){
2489 /**Делает первую букву строки заглавной*/
2490 	if(this=='')
2491 		return '';
2492 	return this[0].toUpperCase()+this.substr(1);//.toLowerCase();
2493 };
2494 
2495 String.prototype.frac=function(p1){
2496 /**Возвращает TeX-запись дроби, в которой числитель - данная строка, знаменатель p1.*/
2497 	return '\\frac{'+this+'}{'+p1+'}';
2498 }
2499 
2500 String.prototype.posl=function(){
2501 /**Возвращает последний символ строки*/
2502 	return this[this.length-1];
2503 };
2504 
2505 String.prototype.udalPosl=function(n){
2506 /**Удаляет n последних символов строки. При вызове без параметров удаляет 1 символ.*/
2507 	if(n==undefined)
2508 		n=1;
2509 	return this.substr(0,this.length-n);
2510 };
2511 
2512 String.prototype.udalPerv=function(n){
2513 /**Удаляет n первых символов строки. При вызове без параметров удаляет 1 символ.*/
2514 	if(n==undefined)
2515 		n=1;
2516 	return this.substr(n,this.length-n);
2517 };
2518 
2519 String.prototype.toStandart=function(p1){
2520 /**Приводит строку к записи "по стандарту": заменяет точку на запятую. 
2521 Если p1, то берёт запятую в фигурные скобки, чтобы убрать отступы в TeX.
2522 Предназначена для строк, содержащих представление числа.*/
2523 	var a=this.replace(/[.]/g,',');
2524 	if(p1)
2525 		a=a.replace(/[,]/,'{,}');
2526 	return a;
2527 };
2528 
2529 String.prototype.esli=function(p1){
2530 /**Возвращает данную строку, если p1, и пустую в противном случае.*/
2531 	return p1?this:'';
2532 }
2533 
2534 String.prototype.vTag=function(p1,p2){
2535 /**"Оборачивает" данную строку с тэг p1 c параметрами p2. p2 можно опускать.*/
2536 	return '<'+p1+(' '+p2).esli(p2)+'>'+this+'</'+p1+'>';
2537 }
2538 
2539 String.prototype.vTabl=function(p1,p2){
2540 /**"Оборачивает" данную строку в тэг таблицы. Применяется крайне редко и узко.*/
2541 	return (p1?p1:'<br/><br/>')+
2542 		this.vTag('table',p2?p2:'style="text-align:center;font:inherit;" border=1');
2543 		//.vTag('center');
2544 }
2545 
2546 String.prototype.reverse=function (){
2547 /**Переворачивает строку*/
2548 	return this.split('').reverse().soed();
2549 };//http://blog.stevenlevithan.com/archives/mimic-lookbehind-javascript //Товарищ очень сильно выручил
2550 
2551 String.prototype.tn=function(){
2552 /**Возвращает число, если данная строка - запись числа с десятичной точкой или запятой.*/
2553 	return 1*this.replace(',','.');
2554 };
2555 
2556 String.prototype.ob$=function(){
2557 /**Оборачивает строку в символы начала/конца формулы TeX - $*/
2558 	return '$'+this+'$';
2559 };
2560 
2561 String.prototype.encodeURIComponent=function(){
2562 	return encodeURIComponent(this);
2563 }
2564 
2565 String.prototype.decodeURIComponent=function(){
2566 	return decodeURIComponent(this);
2567 }
2568 
2569 String.prototype.encodeURI=function(){
2570 	return encodeURI(this);
2571 }
2572 
2573 String.prototype.decodeURI=function(){
2574 	return decodeURI(this);
2575 }
2576 
2577 String.prototype.neutralizeXSS=function(){
2578 /**Нейтрализует (экранирует) XSS-угрозы. По крайней мере, должна. Будет пополняться.*/
2579 	return this.replace(/<\//g,'');
2580 }
2581 
2582 String.prototype.toNumberExt=function(){
2583 /**Превращает арифметическое выражение (+-/*) в число.*/
2584 	if(/[\s0-9\.,\+\-\*\/\(\)]+/.test(this)){
2585 		try{
2586 			return eval(this.replace(/\,/g,'.'));
2587 		}catch(e){
2588 		}
2589 	}
2590 	return 0;
2591 }
2592 
2593 String.prototype.toMtr=function(){
2594 /**Превращает многострочный текст в матрицу строк.*/
2595 	var t=this.
2596 		replace(/<br[\/]*>/g,'\n').
2597 		replace(/[\t]+/g,' ').
2598 		trim();
2599 	var a=t.split(/\s*[\n\r]+\s*/);
2600 	var len=a.length;
2601 	for (var i=0;i<len;i++)
2602 		a[i]=a[i].split(/\s+/);
2603 	return a;
2604 }
2605 
2606 String.prototype.istDataToStd=function(){
2607 /**Приводит дату, записанную в одной из общепринятых форм, к записи "по стандарту". Применяется только в комплексе заданий по истории.*/
2608 	var a=this;
2609 	a=a.replace(/\s/g,'.');
2610 	a=a.replace(/\//g,'.');
2611 	a=a.replace(/[-]/g,'.');
2612 	a=a.replace(/[,]/g,'.');
2613 	a=a.replace(/ю/g,'.');
2614 	a=a.replace(/[.]+/g,'.');
2615 	a=a.replace(/[.]0/g,'.');
2616 	a=a.replace(/^0/g,'');
2617 	a=a.replace(/^[.]/g,'');
2618 	//Убираем г. в конце, если есть
2619 	a=a.replace(/[.]$/g,'');
2620 	a=a.replace(/г$/g,'');
2621 	a=a.replace(/[.]$/g,'');
2622 	//Теперь меняем номер месяца на месяц
2623 	a=a.replace(/[.]1[.]/g, ' января '	);
2624 	a=a.replace(/[.]2[.]/g, ' февраля '	);
2625 	a=a.replace(/[.]3[.]/g, ' марта '	);
2626 	a=a.replace(/[.]4[.]/g, ' апреля '	);
2627 	a=a.replace(/[.]5[.]/g, ' мая '		);
2628 	a=a.replace(/[.]6[.]/g, ' июня '	);
2629 	a=a.replace(/[.]7[.]/g, ' июля '	);
2630 	a=a.replace(/[.]8[.]/g, ' августа '	);
2631 	a=a.replace(/[.]9[.]/g, ' сентября ');
2632 	a=a.replace(/[.]10[.]/g,' октября '	);
2633 	a=a.replace(/[.]11[.]/g,' ноября '	);
2634 	a=a.replace(/[.]12[.]/g,' декабря '	);
2635 	//И наконец, если исправление буквы "ю" на точку привело к повреждению названия месяца:
2636 	a=a.replace(/и[.]ня/g, 'июня'	);
2637 	a=a.replace(/и[.]ля/g, 'июля'	);
2638 	//Меняем точки на пробелы
2639 	a=a.replace(/[.]/g, ' '	);
2640 	
2641 	a=a+' г.';
2642 
2643 	return a;
2644 };
2645 
2646 String.prototype.plusminus=function(){
2647 /**Примитивное упрощение математических выражений. Меняет "++" на "+", например.*/
2648 	var a=this;
2649 	for(;a.match(/[+-][+-]/);){
2650 		a=a.replace(/[+][+]/g,'+');
2651 		a=a.replace(/--/g,'+');
2652 		a=a.replace(/[+]-/g,'-');
2653 		a=a.replace(/-[+]/g,'-');
2654 		a=a.replace(/[+]$/g,'');
2655 		a=a.replace(/[{][+]/g,'{');
2656 		a=a.replace(/[+][}]/g,'}');
2657 		a=a.replace(/\(\+/g,'(');
2658 		a=a.replace(/\+\)/g,')');
2659 	}
2660 	a=a.replace(/[=]\s*[+]/g,'=');
2661 	a=a.replace(/[+]1(?=[A-Za-zА-Яа-яЁё\\(])/g,'+');
2662 	a=a.replace(/[-]1(?=[A-Za-zА-Яа-яЁё\\(])/g,'-');
2663 	a=a.replace(/[{]1(?=[A-Za-zА-Яа-яЁё\\(])/g,'{');
2664 	a=a.replace(/[}]1(?=[A-Za-zА-Яа-яЁё\\(])/g,'}');
2665 	a=a.replace(/[ ]1(?=[A-Za-zА-Яа-яЁё\\(])/g,' ');
2666 	a=a.replace(/[~]1(?=[A-Za-zА-Яа-яЁё\\(])/g,'~');
2667 	a=a.replace(/[(]1(?=[A-Za-zА-Яа-яЁё\\(])/g,'(');
2668 	a=a.replace(/[)]1(?=[A-Za-zА-Яа-яЁё\\(])/g,')');
2669 	a=a.replace(/[=]1(?=[A-Za-zА-Яа-яЁё\\(])/g,'=');
2670 	a=a.replace(/[;]1(?=[A-Za-zА-Яа-яЁё\\(])/g,';');
2671 	a=a.replace(/\^1(?=[A-Za-zА-Яа-яЁё\\(])/g,'^');
2672 	a=a.replace(/\$1(?=[A-Za-zА-Яа-яЁё\\(])/g,'$');
2673 	a=a.replace(/^1(?=[A-Za-zА-Яа-яЁё])/g,'');
2674 	a=a.replace(/^[+]/g,'');
2675 	a=a.replace(/[;][-]0/g,';0');
2676 	a=a.reverse();
2677 	a=a.replace(/[.]{2}(?=[A-Za-zА-Яа-яЁё])/g,'.');
2678 	a=a.replace(/[.]{1}[$][.]{1}(?=[A-Za-zА-Яа-яЁё\\])/g,'$.');
2679 	a=a.reverse();
2680 	return a;
2681 };
2682 
2683 String.prototype.insert=function(i,str) {
2684 //вставляет в строку после i-го символа
2685 	var ss='';
2686 	if (i>0)
2687 		ss=this.substring(0, i);
2688 	var sss='';
2689 	if (i<this.length-1)
2690 		sss=this.substring(i);
2691 	return ss+str+sss;
2692 }
2693 
2694 String.prototype.isLetter=function() {
2695 /**проверяет, буква ли данный символ*/
2696 	var d = (this.length==1) && (this.search(/[a-z]/)!=-1);
2697 	return d;
2698 }
2699 
2700 String.prototype.isGl=function() {
2701 /**проверяет, гласная ли данный символ*/
2702 	var d = (this.search(/[aeiou]/)!=-1) && (this.length==1);
2703 	return d;
2704 }
2705 
2706 String.prototype.cepZamena=function(mas1, mas2){
2707 /**Заменяет i-й символ из массива mas1 i-м символом из массива mas2*/
2708 	var len=this.length;
2709 	var rez='';
2710 	var fl;
2711 	for(var i=0; i<len; i++){
2712 		fl=1;
2713 		for(var j=0;j<26 && fl;j++){
2714 			if(this[i]==mas1[j]){
2715 				rez+=mas2[j];
2716 				fl=0;
2717 			}
2718 		}
2719 		if(fl){
2720 			rez+=this[i];
2721 		}
2722 	}
2723 	return rez;
2724 }
2725 
2726 String.prototype.multiply=function(n){
2727 /**Возвращает строку, записанную n раз подряд*/
2728 	var rez=this;
2729 	for(var i=1;i<n;i++)
2730 		rez+=this;
2731 	return rez;
2732 }
2733 
2734 String.prototype.isString=true;
2735 
2736 String.prototype.addToGlobal('docsString',1);
2737 
2738 'use strict';
2739 
2740 Function.prototype.toStr=function(){
2741 /**Возвращает код функции в виде строки*/
2742 	return ''+this;
2743 }
2744 
2745 Function.prototype.telo=function(){
2746 /**Возвращает тело функции в виде строки*/
2747 	return this.toStr().replace(/}$/,'').replace(/^function \(.*\){/,'');
2748 }
2749 
2750 Function.prototype.zagl=function(){
2751 /**Возвращает заголовок функции в виде строки*/
2752 	return /^function \(.*\)/.exec(this.toStr())[0];
2753 }
2754 
2755 Function.prototype.attr=function(){
2756 /**Возвращает список параметров функции в виде строки*/
2757 	return this.zagl().replace(/^function /,'');
2758 }
2759 
2760 Function.prototype.codeComment=function(){
2761 /**Возвращает первый документационный комментарий внутри функции - такой, как этот.*/
2762 	try{
2763 	return /\/\*\*.*?[\s\S]*?\*\//m.
2764 		exec(this.toStr())[0].
2765 		replace(/^\/\*\*/,'').
2766 		replace(/\*\/$/,'');
2767 	}catch(e){
2768 		return '';
2769 	}
2770 }
2771 
2772 Function.prototype.isFunction=true;
2773 
2774 Function.prototype.addToGlobal('docsFunction',1);
2775 'use strict';
2776 
2777 RegExp.prototype.isRegExp=true;
2778 
2779 RegExp.prototype.addToGlobal('docsRegExp',1);
2780 ////////////////////////////////////////////////////////////////////////
2781 //
2782 //	ie: именительный	падеж единственного	числа
2783 //	re: родительный		падеж единственного	числа
2784 //	de: дательный		падеж единственного	числа
2785 //	ve: винительный		падеж единственного	числа
2786 //	te: творительный	падеж единственного	числа
2787 //	pe: предложный		падеж единственного	числа
2788 //	ie: именительный	падеж множественного	числа
2789 //	re: родительный		падеж множественного	числа
2790 //	de: дательный		падеж множественного	числа
2791 //	ve: винительный		падеж множественного	числа
2792 //	te: творительный	падеж множественного	числа
2793 //	pe: предложный		падеж множественного	числа
2794 //
2795 //	rod: род:
2796 //		0: мужской
2797 //		1: женский
2798 //		2: средний
2799 //		3: только множественное число
2800 //
2801 //	odu: одушевлённость:
2802 //		0: неодушевлённое
2803 //		1: одушевлённое
2804 //
2805 //	skl: склонение:
2806 //		0: несклоняемое
2807 //		1: первое
2808 //		2: второе
2809 //		3: третье
2810 //		4: разносклоняемые существительные
2811 ////////////////////////////////////////////////////////////////////////
2812 if(lx==undefined)
2813 	var lx=[];	//Объявляем глобальный объект lx
2814 ////////////////////////////////////////////////////////////////////////
2815 
2816 
2817 //{{Существительные
2818 lx['август']={
2819 	ie:'август',
2820 	re:'августа',
2821 	de:'августу',
2822 	ve:'август',
2823 	te:'августом',
2824 	pe:'августе',
2825 	im:'августы',
2826 	rm:'августов',
2827 	dm:'августам',
2828 	vm:'августы',
2829 	tm:'августами',
2830 	pm:'августах',
2831 	rod:0,
2832 	skl:2,
2833 	odu:0,
2834 };
2835 lx['Австралия']={
2836 	ie:'Австралия',
2837 	re:'Австралии',
2838 	de:'Австралии',
2839 	ve:'Австралию',
2840 	te:'Австралией',
2841 	pe:'Австралии',
2842 	im:'Австралии',
2843 	rm:'Австралий',
2844 	dm:'Австралиям',
2845 	vm:'Австралии',
2846 	tm:'Австралиями',
2847 	pm:'Австралиях',
2848 	rod:1,
2849 	skl:1,
2850 	odu:0,
2851 };
2852 lx['Австрия']={
2853 	ie:'Австрия',
2854 	re:'Австрии',
2855 	de:'Австрии',
2856 	ve:'Австрию',
2857 	te:'Австрией',
2858 	pe:'Австрии',
2859 	im:'Австрии',
2860 	rm:'Австрий',
2861 	dm:'Австриям',
2862 	vm:'Австрии',
2863 	tm:'Австриями',
2864 	pm:'Австриях',
2865 	rod:1,
2866 	skl:1,
2867 	odu:0,
2868 };
2869 lx['автобус']={
2870 	ie:'автобус',
2871 	re:'автобуса',
2872 	de:'автобусу',
2873 	ve:'автобус',
2874 	te:'автобусом',
2875 	pe:'автобусе',
2876 	im:'автобусы',
2877 	rm:'автобусов',
2878 	dm:'автобусам',
2879 	vm:'автобусы',
2880 	tm:'автобусами',
2881 	pm:'автобусах',
2882 	rod:0,
2883 	skl:2,
2884 	odu:0,
2885 }; 
2886 lx['автомобиль']={
2887 	ie:'автомобиль',
2888 	re:'автомобиля',
2889 	de:'автомобилю',
2890 	ve:'автомобиль',
2891 	te:'автомобилем',
2892 	pe:'автомобиле',
2893 	im:'автомобили',
2894 	rm:'автомобилей',
2895 	dm:'автомобилям',
2896 	vm:'автомобили',
2897 	tm:'автомобилями',
2898 	pm:'автомобилях',
2899 	rod:0,
2900 	skl:2,
2901 	odu:0,
2902 };
2903 lx['аквариум']={
2904 	ie:'аквариум',
2905 	re:'аквариума',
2906 	de:'аквариуму',
2907 	ve:'аквариум',
2908 	te:'аквариумом',
2909 	pe:'аквариуме',
2910 	im:'аквариумы',
2911 	rm:'аквариумов',
2912 	dm:'аквариумам',
2913 	vm:'аквариумы',
2914 	tm:'аквариумами',
2915 	pm:'аквариумах',
2916 	rod:0,
2917 	skl:2,
2918 	odu:0,
2919 };
2920 lx['Анастасия']={
2921 	ie:'Анастасия',
2922 	re:'Анастасии',
2923 	de:'Анастасии',
2924 	ve:'Анастасию',
2925 	te:'Анастасией',
2926 	pe:'Анастасии',
2927 	im:'Анастасии',
2928 	rm:'Анастасий',
2929 	dm:'Анастасиям',
2930 	vm:'Анастасий',
2931 	tm:'Анастасиями',
2932 	pm:'Анастасиях',
2933 	rod:1,
2934 	skl:1,
2935 	odu:1,
2936 	sbs:1,
2937 };
2938 lx['Анатольевна']={
2939 	ie:'Анатольевна',
2940 	re:'Анатольевны',
2941 	de:'Анатольевне',
2942 	ve:'Анатольевну',
2943 	te:'Анатольевной',
2944 	pe:'Анатольевне',
2945 	im:'Анатольевны',
2946 	rm:'Анатольевн',
2947 	dm:'Анатольевнам',
2948 	vm:'Анатольевн',
2949 	tm:'Анатольевнами',
2950 	pm:'Анатольевнах',
2951 	rod:1,
2952 	skl:1,
2953 	odu:1,
2954 	sbs:1,
2955 };
2956 lx['Англия']={
2957 	ie:'Англия',
2958 	re:'Англии',
2959 	de:'Англии',
2960 	ve:'Англию',
2961 	te:'Англией',
2962 	pe:'Англии',
2963 	im:'Англии',
2964 	rm:'Англий',
2965 	dm:'Англиям',
2966 	vm:'Англии',
2967 	tm:'Англиями',
2968 	pm:'Англиях',
2969 	rod:1,
2970 	skl:1,
2971 	odu:0,
2972 	sbs:1,
2973 };
2974 lx['апрель']={
2975 	ie:'апрель',
2976 	re:'апреля',
2977 	de:'апрелю',
2978 	ve:'апрель',
2979 	te:'апрелем',
2980 	pe:'апреле',
2981 	im:'апрели',
2982 	rm:'апрелей',
2983 	dm:'апрелям',
2984 	vm:'апрели',
2985 	tm:'апрелями',
2986 	pm:'апрелях',
2987 	rod:0,
2988 	skl:2,
2989 	odu:0,
2990 };
2991 lx['аспирантка']={
2992 	ie:'аспирантка',
2993 	re:'аспирантки',
2994 	de:'аспирантке',
2995 	ve:'аспирантку',
2996 	te:'аспиранткой',
2997 	pe:'аспирантке',
2998 	im:'аспирантки',
2999 	rm:'аспиранток',
3000 	dm:'аспиранткам',
3001 	vm:'аспиранток',
3002 	tm:'аспирантками',
3003 	pm:'аспирантках',
3004 	rod:1,
3005 	skl:1,
3006 	odu:0,
3007 };
3008 lx['атомоход']={
3009 	ie:'атомоход',
3010 	re:'атомохода',
3011 	de:'атомоходу',
3012 	ve:'атомоход',
3013 	te:'атомоходом',
3014 	pe:'атомоходе',
3015 	im:'атомоходы',
3016 	rm:'атомоходов',
3017 	dm:'атомоходам',
3018 	vm:'атомоходы',
3019 	tm:'атомоходами',
3020 	pm:'атомоходах',
3021 	rod:0,
3022 	skl:2,
3023 	odu:0,
3024 };
3025 lx['бадминтон']={
3026 	ie:'бадминтон',
3027 	re:'бадминтона',
3028 	de:'бадминтону',
3029 	ve:'бадминтон',
3030 	te:'бадминтоном',
3031 	pe:'бадминтоне',
3032 	im:'бадминтоны',
3033 	rm:'бадминтонов',
3034 	dm:'бадминтонам',
3035 	vm:'бадминтоны',
3036 	tm:'бадминтонами',
3037 	pm:'бадминтонах',
3038 	rod:0,
3039 	skl:2,
3040 	odu:0,
3041 };
3042 lx['батон']={
3043 	ie:'батон',
3044 	re:'батона',
3045 	de:'батону',
3046 	ve:'батон',
3047 	te:'батоном',
3048 	pe:'батоне',
3049 	im:'батоны',
3050 	rm:'батонов',
3051 	dm:'батонам',
3052 	vm:'батоны',
3053 	tm:'батонами',
3054 	pm:'батонах',
3055 	rod:0,
3056 	skl:2,
3057 	odu:0,
3058 };
3059 lx['Белоруссия']={
3060 	ie:'Белоруссия',
3061 	re:'Белоруссии',
3062 	de:'Белоруссии',
3063 	ve:'Белоруссию',
3064 	te:'Белоруссией',
3065 	pe:'Белоруссии',
3066 	im:'Белоруссии',
3067 	rm:'Белоруссий',
3068 	dm:'Белоруссиям',
3069 	vm:'Белоруссии',
3070 	tm:'Белоруссиями',
3071 	pm:'Белоруссиях',
3072 	rod:1,
3073 	skl:1,
3074 	odu:0,
3075 	sbs:1,
3076 };
3077 lx['Бельгия']={
3078 	ie:'Бельгия',
3079 	re:'Бельгии',
3080 	de:'Бельгии',
3081 	ve:'Бельгию',
3082 	te:'Бельгией',
3083 	pe:'Бельгии',
3084 	im:'Бельгии',
3085 	rm:'Бельгий',
3086 	dm:'Бельгиям',
3087 	vm:'Бельгии',
3088 	tm:'Бельгиями',
3089 	pm:'Бельгиях',
3090 	rod:1,
3091 	skl:1,
3092 	odu:0,
3093 };
3094 lx['бензин']={
3095 	ie:'бензин',
3096 	re:'бензина',
3097 	de:'бензину',
3098 	ve:'бензин',
3099 	te:'бензином',
3100 	pe:'бензине',
3101 	im:'бензины',
3102 	rm:'бензинов',
3103 	dm:'бензинам',
3104 	vm:'бензины',
3105 	tm:'бензинами',
3106 	pm:'бензинах',
3107 	rod:0,
3108 	skl:2,
3109 	odu:0,
3110 }; 
3111 lx['бетон']={
3112 	ie:'бетон',
3113 	re:'бетона',
3114 	de:'бетону',
3115 	ve:'бетон',
3116 	te:'бетоном',
3117 	pe:'бетоне',
3118 	im:'бетоны',
3119 	rm:'бетонов',
3120 	dm:'бетонам',
3121 	vm:'бетоны',
3122 	tm:'бетонами',
3123 	pm:'бетонах',
3124 	rod:0,
3125 	skl:2,
3126 	odu:0,
3127 };
3128 lx['блондинка']={
3129 	ie:'блондинка',
3130 	re:'блондинки',
3131 	de:'блондинке',
3132 	ve:'блондинку',
3133 	te:'блондинкой',
3134 	pe:'блондинке',
3135 	im:'блондинки',
3136 	rm:'блондинок',
3137 	dm:'блондинкам',
3138 	vm:'блондинок',
3139 	tm:'блондинками',
3140 	pm:'блондинках',
3141 	rod:1,
3142 	skl:1,
3143 	odu:0,
3144 };
3145 lx['Бразилия']={
3146 	ie:'Бразилия',
3147 	re:'Бразилии',
3148 	de:'Бразилии',
3149 	ve:'Бразилию',
3150 	te:'Бразилией',
3151 	pe:'Бразилии',
3152 	im:'Бразилии',
3153 	rm:'Бразилий',
3154 	dm:'Бразилиям',
3155 	vm:'Бразилии',
3156 	tm:'Бразилиями',
3157 	pm:'Бразилиях',
3158 	rod:1,
3159 	skl:1,
3160 	odu:0,
3161 };
3162 lx['брус']={
3163 	ie:'брус',
3164 	re:'бруса',
3165 	de:'брусу',
3166 	ve:'брус',
3167 	te:'брусом',
3168 	pe:'брусе',
3169 	im:'брусья',
3170 	rm:'брусьев',
3171 	dm:'брусьям',
3172 	vm:'брусья',
3173 	tm:'брусьями',
3174 	pm:'брусьях',
3175 	rod:0,
3176 	skl:2,
3177 	odu:0,
3178 };
3179 lx['булавка']={
3180 	ie:'булавка',
3181 	re:'булавки',
3182 	de:'булавке',
3183 	ve:'булавку',
3184 	te:'булавкой',
3185 	pe:'булавке',
3186 	im:'булавки',
3187 	rm:'булавок',
3188 	dm:'булавкам',
3189 	vm:'булавки',
3190 	tm:'булавками',
3191 	pm:'булавках',
3192 	rod:1,
3193 	skl:1,
3194 	odu:0,
3195 };
3196 lx['бутерброд']={
3197 	ie:'бутерброд',
3198 	re:'бутерброда',
3199 	de:'бутерброду',
3200 	ve:'бутерброд',
3201 	te:'бутербродом',
3202 	pe:'бутерброде',
3203 	im:'бутерброды',
3204 	rm:'бутербродов',
3205 	dm:'бутербродам',
3206 	vm:'бутерброды',
3207 	tm:'бутербродами',
3208 	pm:'бутербродах',
3209 	rod:0,
3210 	skl:2,
3211 	odu:0,
3212 };
3213 lx['Васильевна']={
3214 	ie:'Васильевна',
3215 	re:'Васильевны',
3216 	de:'Васильевне',
3217 	ve:'Васильевну',
3218 	te:'Васильевной',
3219 	pe:'Васильевне',
3220 	im:'Васильевны',
3221 	rm:'Васильевн',
3222 	dm:'Васильевнам',
3223 	vm:'Васильевн',
3224 	tm:'Васильевнами',
3225 	pm:'Васильевнах',
3226 	rod:1,
3227 	skl:1,
3228 	odu:0,
3229 };
3230 lx['веб-дизайнер']={
3231 	ie:'веб-дизайнер',
3232 	re:'веб-дизайнера',
3233 	de:'веб-дизайнеру',
3234 	ve:'веб-дизайнера',
3235 	te:'веб-дизайнером',
3236 	pe:'веб-дизайнере',
3237 	im:'веб-дизайнеры',
3238 	rm:'веб-дизайнеров',
3239 	dm:'веб-дизайнерам',
3240 	vm:'веб-дизайнеров',
3241 	tm:'веб-дизайнерами',
3242 	pm:'веб-дизайнерах',
3243 	rod:0,
3244 	skl:2,
3245 	odu:0,
3246 };
3247 lx['ведомство']={
3248 	ie:'ведомство',
3249 	re:'ведомства',
3250 	de:'ведомству',
3251 	ve:'ведомство',
3252 	te:'ведомством',
3253 	pe:'ведомстве',
3254 	im:'ведомства',
3255 	rm:'ведомств',
3256 	dm:'ведомствам',
3257 	vm:'ведомства',
3258 	tm:'ведомствами',
3259 	pm:'ведомствах',
3260 	rod:2,
3261 	skl:2,
3262 	odu:0,
3263 };
3264 lx['велосипед']={
3265 	ie:'велосипед',
3266 	re:'велосипеда',
3267 	de:'велосипеду',
3268 	ve:'велосипед',
3269 	te:'велосипедом',
3270 	pe:'велосипеде',
3271 	im:'велосипеды',
3272 	rm:'велосипедов',
3273 	dm:'велосипедам',
3274 	vm:'велосипеды',
3275 	tm:'велосипедами',
3276 	pm:'велосипедах',
3277 	rod:0,
3278 	skl:2,
3279 	odu:0,
3280 };
3281 lx['Венесуэла']={
3282 	ie:'Венесуэла',
3283 	re:'Венесуэлы',
3284 	de:'Венесуэле',
3285 	ve:'Венесуэлу',
3286 	te:'Венесуэлой',
3287 	pe:'Венесуэле',
3288 	im:'Венесуэлы',
3289 	rm:'Венесуэл',
3290 	dm:'Венесуэлам',
3291 	vm:'Венесуэлы',
3292 	tm:'Венесуэлами',
3293 	pm:'Венесуэлах',
3294 	rod:1,
3295 	skl:1,
3296 	odu:0,
3297 };
3298 lx['Вероника']={
3299 	ie:'Вероника',
3300 	re:'Вероники',
3301 	de:'Веронике',
3302 	ve:'Веронику',
3303 	te:'Вероникой',
3304 	pe:'Веронике',
3305 	im:'Вероники',
3306 	rm:'Вероник',
3307 	dm:'Вероникам',
3308 	vm:'Вероник',
3309 	tm:'Верониками',
3310 	pm:'Верониках',
3311 	rod:1,
3312 	skl:1,
3313 	odu:0,
3314 };
3315 lx['верста']={
3316 	ie:'верста',
3317 	re:'версты',
3318 	de:'версте',
3319 	ve:'версту',
3320 	te:'верстой',
3321 	pe:'версте',
3322 	im:'вёрсты',
3323 	rm:'вёрст',
3324 	dm:'вёрстам',
3325 	vm:'вёрсты',
3326 	tm:'вёрстами',
3327 	pm:'вёрстах',
3328 	rod:1,
3329 	skl:1,
3330 	odu:0,
3331 };
3332 lx['витрина']={
3333 	ie:'витрина',
3334 	re:'витрины',
3335 	de:'витрине',
3336 	ve:'витрину',
3337 	te:'витриной',
3338 	pe:'витрине',
3339 	im:'витрины',
3340 	rm:'витрин',
3341 	dm:'витринам',
3342 	vm:'витрины',
3343 	tm:'витринами',
3344 	pm:'витринах',
3345 	rod:1,
3346 	skl:1,
3347 	odu:0,
3348 };
3349 lx['вода']={
3350 	ie:'вода',
3351 	re:'воды',
3352 	de:'воде',
3353 	ve:'воду',
3354 	te:'водой',
3355 	pe:'воде',
3356 	im:'воды',
3357 	rm:'вод',
3358 	dm:'водам',
3359 	vm:'воды',
3360 	tm:'водами',
3361 	pm:'водах',
3362 	rod:1,
3363 	skl:1,
3364 	odu:0,
3365 };
3366 lx['Воронеж']={
3367 	ie:'Воронеж',
3368 	re:'Воронежа',
3369 	de:'Воронежу',
3370 	ve:'Воронеж',
3371 	te:'Воронежом',
3372 	pe:'Воронеже',
3373 	im:'Воронежи',
3374 	rm:'Воронежей',
3375 	dm:'Воронежам',
3376 	vm:'Воронежи',
3377 	tm:'Воронежами',
3378 	pm:'Воронежах',
3379 	rod:0,
3380 	skl:2,
3381 	odu:0,
3382 	sbs:1,
3383 	chr:1,
3384 };
3385 lx['воскресенье']={
3386 	ie:'воскресенье',
3387 	re:'воскресенья',
3388 	de:'воскресенью',
3389 	ve:'воскресенье',
3390 	te:'воскресеньем',
3391 	pe:'воскресенье',
3392 	im:'воскресенья',
3393 	rm:'воскресений',
3394 	dm:'воскресеньям',
3395 	vm:'воскресенья',
3396 	tm:'воскресеньями',
3397 	pm:'воскресеньях',
3398 	rod:2,
3399 	skl:2,
3400 	odu:0,
3401 };
3402 lx['время']={
3403 	ie:'время',
3404 	re:'времени',
3405 	de:'времени',
3406 	ve:'время',
3407 	te:'временем',
3408 	pe:'времени',
3409 	im:'времена',
3410 	rm:'времён',
3411 	dm:'временам',
3412 	vm:'времена',
3413 	tm:'временами',
3414 	pm:'временах',
3415 	rod:0,
3416 	skl:4,
3417 	odu:0,
3418 };
3419 lx['вторник']={
3420 	ie:'вторник',
3421 	re:'вторника',
3422 	de:'вторнику',
3423 	ve:'вторник',
3424 	te:'вторником',
3425 	pe:'вторнике',
3426 	im:'вторники',
3427 	rm:'вторников',
3428 	dm:'вторникам',
3429 	vm:'вторники',
3430 	tm:'вторниками',
3431 	pm:'вторниках',
3432 	rod:0,
3433 	skl:2,
3434 	odu:0,
3435 };
3436 lx['выступление']={
3437 	ie:'выступление',
3438 	re:'выступления',
3439 	de:'выступлению',
3440 	ve:'выступление',
3441 	te:'выступлением',
3442 	pe:'выступлении',
3443 	im:'выступления',
3444 	rm:'выступлений',
3445 	dm:'выступлениям',
3446 	vm:'выступления',
3447 	tm:'выступлениями',
3448 	pm:'выступлениях',
3449 	rod:2,
3450 	skl:2,
3451 	odu:0,
3452 	sbs:0,
3453 	chr:1,
3454 	rmn:'выступлениев',
3455 };
3456 lx['газ']={
3457 	ie:'газ',
3458 	re:'газа',
3459 	de:'газу',
3460 	ve:'газ',
3461 	te:'газом',
3462 	pe:'газе',
3463 	im:'газы',
3464 	rm:'газов',
3465 	dm:'газам',
3466 	vm:'газы',
3467 	tm:'газами',
3468 	pm:'газах',
3469 	rod:0,
3470 	skl:2,
3471 	odu:0,
3472 }; 
3473 lx['гараж']={
3474 	ie:'гараж',
3475 	re:'гаража',
3476 	de:'гаражу',
3477 	ve:'гараж',
3478 	te:'гаражом',
3479 	pe:'гараже',
3480 	im:'гаражы',
3481 	rm:'гаражов',
3482 	dm:'гаражам',
3483 	vm:'гаражы',
3484 	tm:'гаражами',
3485 	pm:'гаражах',
3486 	rod:0,
3487 	skl:2,
3488 	odu:0,
3489 };
3490 lx['Германия']={
3491 	ie:'Германия',
3492 	re:'Германии',
3493 	de:'Германии',
3494 	ve:'Германию',
3495 	te:'Германией',
3496 	pe:'Германии',
3497 	im:'Германии',
3498 	rm:'Германий',
3499 	dm:'Германиям',
3500 	vm:'Германии',
3501 	tm:'Германиями',
3502 	pm:'Германиях',
3503 	rod:1,
3504 	skl:1,
3505 	odu:0,
3506 };
3507 lx['гимнастика']={
3508 	ie:'гимнастика',
3509 	re:'гимнастики',
3510 	de:'гимнастике',
3511 	ve:'гимнастику',
3512 	te:'гимнастикой',
3513 	pe:'гимнастике',
3514 	im:'гимнастики',
3515 	rm:'гимнастик',
3516 	dm:'гимнастикам',
3517 	vm:'гимнастики',
3518 	tm:'гимнастиками',
3519 	pm:'гимнастиках',
3520 	rod:1,
3521 	skl:1,
3522 	odu:0,
3523 };
3524 lx['город']={
3525 	ie:'город',
3526 	re:'города',
3527 	de:'городу',
3528 	ve:'город',
3529 	te:'городом',
3530 	pe:'городе',
3531 	im:'города',
3532 	rm:'городов',
3533 	dm:'городам',
3534 	vm:'города',
3535 	tm:'городами',
3536 	pm:'городах',
3537 	rod:0,
3538 	skl:2,
3539 	odu:0,
3540 }; 
3541 lx['городок']={
3542 	ie:'городок',
3543 	re:'городка',
3544 	de:'городку',
3545 	ve:'городок',
3546 	te:'городком',
3547 	pe:'городке',
3548 	im:'городки',
3549 	rm:'городков',
3550 	dm:'городкам',
3551 	vm:'городки',
3552 	tm:'городками',
3553 	pm:'городках',
3554 	rod:0,
3555 	skl:2,
3556 	odu:0,
3557 };
3558 lx['гравий']={
3559 	ie:'гравий',
3560 	re:'гравия',
3561 	de:'гравию',
3562 	ve:'гравий',
3563 	te:'гравием',
3564 	pe:'гравии',
3565 	im:'гравии',
3566 	rm:'гравиев',
3567 	dm:'гравиям',
3568 	vm:'гравии',
3569 	tm:'гравиями',
3570 	pm:'гравиях',
3571 	rod:0,
3572 	skl:2,
3573 	odu:0,
3574 };
3575 lx['гранит']={
3576 	ie:'гранит',
3577 	re:'гранита',
3578 	de:'граниту',
3579 	ve:'гранит',
3580 	te:'гранитом',
3581 	pe:'граните',
3582 	im:'граниты',
3583 	rm:'гранитов',
3584 	dm:'гранитам',
3585 	vm:'граниты',
3586 	tm:'гранитами',
3587 	pm:'гранитах',
3588 	rod:0,
3589 	skl:2,
3590 	odu:0,
3591 };
3592 lx['грузовик']={
3593 	ie:'грузовик',
3594 	re:'грузовика',
3595 	de:'грузовику',
3596 	ve:'грузовик',
3597 	te:'грузовиком',
3598 	pe:'грузовике',
3599 	im:'грузовики',
3600 	rm:'грузовиков',
3601 	dm:'грузовикам',
3602 	vm:'грузовики',
3603 	tm:'грузовиками',
3604 	pm:'грузовиках',
3605 	rod:0,
3606 	skl:2,
3607 	odu:0,
3608 };
3609 lx['груша']={
3610 	ie:'груша',
3611 	re:'груши',
3612 	de:'груше',
3613 	ve:'грушу',
3614 	te:'грушой',
3615 	pe:'груше',
3616 	im:'груши',
3617 	rm:'груш',
3618 	dm:'грушам',
3619 	vm:'груши',
3620 	tm:'грушами',
3621 	pm:'грушах',
3622 	rod:1,
3623 	skl:1,
3624 	odu:0,
3625 };
3626 lx['Дарья']={
3627 	ie:'Дарья',
3628 	re:'Дарьи',
3629 	de:'Дарье',
3630 	ve:'Дарью',
3631 	te:'Дарьей',
3632 	pe:'Дарье',
3633 	im:'Дарьи',
3634 	rm:'Дарий',
3635 	dm:'Дарьям',
3636 	vm:'Дарьи',
3637 	tm:'Дарьями',
3638 	pm:'Дарьях',
3639 	rod:1,
3640 	skl:1,
3641 	odu:0,
3642 };
3643 lx['дача']={
3644 	ie:'дача',
3645 	re:'дачи',
3646 	de:'даче',
3647 	ve:'дачу',
3648 	te:'дачей',
3649 	pe:'даче',
3650 	im:'дачи',
3651 	rm:'дач',
3652 	dm:'дачам',
3653 	vm:'дачи',
3654 	tm:'дачами',
3655 	pm:'дачах',
3656 	rod:1,
3657 	skl:1,
3658 	odu:0,
3659 };
3660 lx['декада']={
3661 	ie:'декада',
3662 	re:'декады',
3663 	de:'декаде',
3664 	ve:'декаду',
3665 	te:'декадой',
3666 	pe:'декаде',
3667 	im:'декады',
3668 	rm:'декад',
3669 	dm:'декадам',
3670 	vm:'декады',
3671 	tm:'декадами',
3672 	pm:'декадах',
3673 	rod:1,
3674 	skl:1,
3675 	odu:0,
3676 };
3677 lx['дельтоид']={
3678 	ie:'дельтоид',
3679 	re:'дельтоида',
3680 	de:'дельтоиду',
3681 	ve:'дельтоид',
3682 	te:'дельтоидом',
3683 	pe:'дельтоиде',
3684 	im:'дельтоиды',
3685 	rm:'дельтоидов',
3686 	dm:'дельтоидам',
3687 	vm:'дельтоиды',
3688 	tm:'дельтоидами',
3689 	pm:'дельтоидах',
3690 	rod:0,
3691 	skl:2,
3692 	odu:0,
3693 };
3694 lx['день']={
3695 	ie:'день',
3696 	re:'дня',
3697 	de:'дню',
3698 	ve:'день',
3699 	te:'днём',
3700 	pe:'дне',
3701 	im:'дни',
3702 	rm:'дней',
3703 	dm:'дням',
3704 	vm:'дни',
3705 	tm:'днями',
3706 	pm:'днях',
3707 	rod:0,
3708 	skl:2,
3709 	odu:0,
3710 }; 
3711 lx['деревня']={
3712 	ie:'деревня',
3713 	re:'деревни',
3714 	de:'деревне',
3715 	ve:'деревню',
3716 	te:'деревней',
3717 	pe:'деревне',
3718 	im:'деревни',
3719 	rm:'деревень',
3720 	dm:'деревням',
3721 	vm:'деревни',
3722 	tm:'деревнями',
3723 	pm:'деревнях',
3724 	rod:1,
3725 	skl:1,
3726 	odu:0,
3727 };
3728 lx['деталь']={
3729 	ie:'деталь',
3730 	re:'детали',
3731 	de:'детали',
3732 	ve:'деталь',
3733 	te:'деталью',
3734 	pe:'детали',
3735 	im:'детали',
3736 	rm:'деталей',
3737 	dm:'деталям',
3738 	vm:'детали',
3739 	tm:'деталями',
3740 	pm:'деталях',
3741 	rod:1,
3742 	skl:3,
3743 	odu:0,
3744 };
3745 lx['дециметр']={
3746 	ie:'дециметр',
3747 	re:'дециметра',
3748 	de:'дециметру',
3749 	ve:'дециметр',
3750 	te:'дециметром',
3751 	pe:'дециметре',
3752 	im:'дециметры',
3753 	rm:'дециметров',
3754 	dm:'дециметрам',
3755 	vm:'дециметры',
3756 	tm:'дециметрами',
3757 	pm:'дециметрах',
3758 	rod:0,
3759 	skl:2,
3760 	odu:0,
3761 	skr:'дм',
3762 };
3763 lx['диагональ']={
3764 	ie:'диагональ',
3765 	re:'диагонали',
3766 	de:'диагонали',
3767 	ve:'диагональ',
3768 	te:'диагональю',
3769 	pe:'диагонали',
3770 	im:'диагонали',
3771 	rm:'диагоналей',
3772 	dm:'диагоналям',
3773 	vm:'диагонали',
3774 	tm:'диагоналями',
3775 	pm:'диагоналях',
3776 	rod:1,
3777 	skl:3,
3778 	odu:0,
3779 };
3780 lx['дизель']={
3781 	ie:'дизель',
3782 	re:'дизеля',
3783 	de:'дизелю',
3784 	ve:'дизель',
3785 	te:'дизелем',
3786 	pe:'дизеле',
3787 	im:'дизели',
3788 	rm:'дизелей',
3789 	dm:'дизелям',
3790 	vm:'дизели',
3791 	tm:'дизелями',
3792 	pm:'дизелях',
3793 	rod:0,
3794 	skl:2,
3795 	odu:0,
3796 };
3797 lx['доллар']={
3798 	ie:'доллар',
3799 	re:'доллара',
3800 	de:'доллару',
3801 	ve:'доллар',
3802 	te:'долларом',
3803 	pe:'долларе',
3804 	im:'доллары',
3805 	rm:'долларов',
3806 	dm:'долларам',
3807 	vm:'доллары',
3808 	tm:'долларами',
3809 	pm:'долларах',
3810 	rod:0,
3811 	skl:2,
3812 	odu:0,
3813 }; 
3814 lx['дом']={
3815 	ie:'дом',
3816 	re:'дома',
3817 	de:'дому',
3818 	ve:'дом',
3819 	te:'домом',
3820 	pe:'доме',
3821 	im:'дома',
3822 	rm:'домов',
3823 	dm:'домам',
3824 	vm:'дома',
3825 	tm:'домами',
3826 	pm:'домах',
3827 	rod:0,
3828 	skl:2,
3829 	odu:0,
3830 };
3831 lx['домик']={
3832 	ie:'домик',
3833 	re:'домика',
3834 	de:'домику',
3835 	ve:'домик',
3836 	te:'домиком',
3837 	pe:'домике',
3838 	im:'домики',
3839 	rm:'домиков',
3840 	dm:'домикам',
3841 	vm:'домики',
3842 	tm:'домиками',
3843 	pm:'домиках',
3844 	rod:0,
3845 	skl:2,
3846 	odu:0,
3847 };
3848 lx['дробь']={
3849 	ie:'дробь',
3850 	re:'дроби',
3851 	de:'дроби',
3852 	ve:'дробь',
3853 	te:'дробью',
3854 	pe:'дроби',
3855 	im:'дроби',
3856 	rm:'дробей',
3857 	dm:'дробям',
3858 	vm:'дроби',
3859 	tm:'дробями',
3860 	pm:'дробях',
3861 	rod:1,
3862 	skl:3,
3863 	odu:0,
3864 	chr:1,
3865 };
3866 lx['евро']={
3867 	ie:'евро',
3868 	re:'евро',
3869 	de:'евро',
3870 	ve:'евро',
3871 	te:'евро',
3872 	pe:'евро',
3873 	im:'евро',
3874 	rm:'евро',
3875 	dm:'евро',
3876 	vm:'евро',
3877 	tm:'евро',
3878 	pm:'евро',
3879 	rod:2,
3880 	skl:0,
3881 	odu:0,
3882 };
3883 lx['Елена']={
3884 	ie:'Елена',
3885 	re:'Елены',
3886 	de:'Елене',
3887 	ve:'Елену',
3888 	te:'Еленой',
3889 	pe:'Елене',
3890 	im:'Елены',
3891 	rm:'Елен',
3892 	dm:'Еленам',
3893 	vm:'Елен',
3894 	tm:'Еленами',
3895 	pm:'Еленах',
3896 	rod:1,
3897 	skl:1,
3898 	odu:0,
3899 };
3900 lx['жидкость']={
3901 	ie:'жидкость',
3902 	re:'жидкости',
3903 	de:'жидкости',
3904 	ve:'жидкость',
3905 	te:'жидкостью',
3906 	pe:'жидкости',
3907 	im:'жидкости',
3908 	rm:'жидкостей',
3909 	dm:'жидкостям',
3910 	vm:'жидкости',
3911 	tm:'жидкостями',
3912 	pm:'жидкостях',
3913 	rod:1,
3914 	skl:3,
3915 	odu:0,
3916 };
3917 lx['задание']={
3918 	ie:'задание',
3919 	re:'задания',
3920 	de:'заданию',
3921 	ve:'задание',
3922 	te:'заданием',
3923 	pe:'задании',
3924 	im:'задания',
3925 	rm:'заданий',
3926 	dm:'заданиям',
3927 	vm:'задания',
3928 	tm:'заданиями',
3929 	pm:'заданиях',
3930 	rod:2,
3931 	skl:2,
3932 	odu:0,
3933 };
3934 lx['"Запорожец"']={
3935 	ie:'"Запорожец"',
3936 	re:'"Запорожца"',
3937 	de:'"Запорожцу"',
3938 	ve:'"Запорожец"',
3939 	te:'"Запорожцем"',
3940 	pe:'"Запорожце"',
3941 	im:'"Запорожцы"',
3942 	rm:'"Запорожцев"',
3943 	dm:'"Запорожцам"',
3944 	vm:'"Запорожцы"',
3945 	tm:'"Запорожцами"',
3946 	pm:'"Запорожцах"',
3947 	rod:0,
3948 	skl:2,
3949 	odu:0,
3950 };
3951 lx['значение']={
3952 	ie:'значение',
3953 	re:'значения',
3954 	de:'значению',
3955 	ve:'значение',
3956 	te:'значением',
3957 	pe:'значении',
3958 	im:'значения',
3959 	rm:'значений',
3960 	dm:'значениям',
3961 	vm:'значения',
3962 	tm:'значениями',
3963 	pm:'значениях',
3964 	rod:2,
3965 	skl:2,
3966 	odu:0,
3967 };
3968 lx['Ивановна']={
3969 	ie:'Ивановна',
3970 	re:'Ивановны',
3971 	de:'Ивановне',
3972 	ve:'Ивановну',
3973 	te:'Ивановной',
3974 	pe:'Ивановне',
3975 	im:'Ивановны',
3976 	rm:'Ивановн',
3977 	dm:'Ивановнам',
3978 	vm:'Ивановн',
3979 	tm:'Ивановнами',
3980 	pm:'Ивановнах',
3981 	rod:1,
3982 	skl:1,
3983 	odu:0,
3984 };
3985 lx['известняк']={
3986 	ie:'известняк',
3987 	re:'известняка',
3988 	de:'известняку',
3989 	ve:'известняк',
3990 	te:'известняком',
3991 	pe:'известняке',
3992 	im:'известняки',
3993 	rm:'известняков',
3994 	dm:'известнякам',
3995 	vm:'известняки',
3996 	tm:'известняками',
3997 	pm:'известняках',
3998 	rod:0,
3999 	skl:2,
4000 	odu:0,
4001 };
4002 lx['Израиль']={
4003 	ie:'Израиль',
4004 	re:'Израиля',
4005 	de:'Израилю',
4006 	ve:'Израиль',
4007 	te:'Израилем',
4008 	pe:'Израиле',
4009 	im:'Израили',
4010 	rm:'Израилей',
4011 	dm:'Израилям',
4012 	vm:'Израили',
4013 	tm:'Израилями',
4014 	pm:'Израилях',
4015 	rod:0,
4016 	skl:2,
4017 	odu:0,
4018 };
4019 lx['инноград']={
4020 	ie:'инноград',
4021 	re:'иннограда',
4022 	de:'иннограду',
4023 	ve:'инноград',
4024 	te:'инноградом',
4025 	pe:'иннограде',
4026 	im:'иннограды',
4027 	rm:'инноградов',
4028 	dm:'инноградам',
4029 	vm:'иннограды',
4030 	tm:'инноградами',
4031 	pm:'инноградах',
4032 	rod:0,
4033 	skl:2,
4034 	odu:0,
4035 };
4036 lx['интервал']={
4037 	ie:'интервал',
4038 	re:'интервала',
4039 	de:'интервалу',
4040 	ve:'интервал',
4041 	te:'интервалом',
4042 	pe:'интервале',
4043 	im:'интервалы',
4044 	rm:'интервалов',
4045 	dm:'интервалам',
4046 	vm:'интервалы',
4047 	tm:'интервалами',
4048 	pm:'интервалах',
4049 	rod:0,
4050 	skl:2,
4051 	odu:0,
4052 };
4053 lx['июнь']={
4054 	ie:'июнь',
4055 	re:'июня',
4056 	de:'июню',
4057 	ve:'июнь',
4058 	te:'июнем',
4059 	pe:'июне',
4060 	im:'июни',
4061 	rm:'июней',
4062 	dm:'июням',
4063 	vm:'июни',
4064 	tm:'июнями',
4065 	pm:'июнях',
4066 	rod:0,
4067 	skl:2,
4068 	odu:0,
4069 };
4070 lx['июль']={
4071 	ie:'июль',
4072 	re:'июля',
4073 	de:'июлю',
4074 	ve:'июль',
4075 	te:'июлем',
4076 	pe:'июле',
4077 	im:'июли',
4078 	rm:'июлей',
4079 	dm:'июлям',
4080 	vm:'июли',
4081 	tm:'июлями',
4082 	pm:'июлях',
4083 	rod:0,
4084 	skl:2,
4085 	odu:0,
4086 };
4087 lx['кабельтов']={
4088 	ie:'кабельтов',
4089 	re:'кабельтова',
4090 	de:'кабельтову',
4091 	ve:'кабельтов',
4092 	te:'кабельтовым',
4093 	pe:'кабельтовом',
4094 	im:'кабельтовы',
4095 	rm:'кабельтовых',
4096 	dm:'кабельтовым',
4097 	vm:'кабельтовых',
4098 	tm:'кабельтовыми',
4099 	pm:'кабельтовых',
4100 	rod:0,
4101 	skl:2,
4102 	odu:0,
4103 };
4104 lx['Казань']={
4105         ie:'Казань',
4106         re:'Казани',
4107         de:'Казани',
4108         ve:'Казань',
4109         te:'Казанью',
4110         pe:'Казани',
4111         im:'Казани',
4112         rm:'Казаней',
4113         dm:'Казаням',
4114         vm:'Казани',
4115         tm:'Казанями',
4116         pm:'Казанях',
4117         rod:1,
4118         skl:3,
4119         odu:0,
4120 };
4121 lx['кальций']={
4122 	ie:'кальций',
4123 	re:'кальция',
4124 	de:'кальцию',
4125 	ve:'кальций',
4126 	te:'кальцием',
4127 	pe:'кальции',
4128 	im:'кальции',
4129 	rm:'кальциев',
4130 	dm:'кальциям',
4131 	vm:'кальции',
4132 	tm:'кальциями',
4133 	pm:'кальциях',
4134 	rod:0,
4135 	skl:2,
4136 	odu:0,
4137 };
4138 lx['камень']={
4139 	ie:'камень',
4140 	re:'камня',
4141 	de:'камню',
4142 	ve:'камень',
4143 	te:'камнем',
4144 	pe:'камне',
4145 	im:'камни',
4146 	rm:'камней',
4147 	dm:'камням',
4148 	vm:'камни',
4149 	tm:'камнями',
4150 	pm:'камнях',
4151 	rod:0,
4152 	skl:2,
4153 	odu:0,
4154 };
4155 lx['канцелярия']={
4156 	ie:'канцелярия',
4157 	re:'канцелярии',
4158 	de:'канцелярии',
4159 	ve:'канцелярию',
4160 	te:'канцелярией',
4161 	pe:'канцелярии',
4162 	im:'канцелярии',
4163 	rm:'канцелярий',
4164 	dm:'канцеляриям',
4165 	vm:'канцелярии',
4166 	tm:'канцеляриями',
4167 	pm:'канцеляриях',
4168 	rod:1,
4169 	skl:1,
4170 	odu:0,
4171 };
4172 lx['катет']={
4173 	ie:'катет',
4174 	re:'катета',
4175 	de:'катету',
4176 	ve:'катет',
4177 	te:'катетом',
4178 	pe:'катете',
4179 	im:'катеты',
4180 	rm:'катетов',
4181 	dm:'катетам',
4182 	vm:'катеты',
4183 	tm:'катетами',
4184 	pm:'катетах',
4185 	rod:0,
4186 	skl:2,
4187 	odu:0,
4188 };
4189 lx['квадрат']={
4190 	ie:'квадрат',
4191 	re:'квадрата',
4192 	de:'квадрату',
4193 	ve:'квадрат',
4194 	te:'квадратом',
4195 	pe:'квадрате',
4196 	im:'квадраты',
4197 	rm:'квадратов',
4198 	dm:'квадратам',
4199 	vm:'квадраты',
4200 	tm:'квадратами',
4201 	pm:'квадратах',
4202 	rod:0,
4203 	skl:2,
4204 	odu:0,
4205 };
4206 lx['керосин']={
4207 	ie:'керосин',
4208 	re:'керосина',
4209 	de:'керосину',
4210 	ve:'керосин',
4211 	te:'керосином',
4212 	pe:'керосине',
4213 	im:'керосины',
4214 	rm:'керосинов',
4215 	dm:'керосинам',
4216 	vm:'керосины',
4217 	tm:'керосинами',
4218 	pm:'керосинах',
4219 	rod:0,
4220 	skl:2,
4221 	odu:0,
4222 };
4223 lx['километр']={
4224 	ie:'километр',
4225 	re:'километра',
4226 	de:'километру',
4227 	ve:'километр',
4228 	te:'километром',
4229 	pe:'километре',
4230 	im:'километры',
4231 	rm:'километров',
4232 	dm:'километрам',
4233 	vm:'километры',
4234 	tm:'километрами',
4235 	pm:'километрах',
4236 	rod:0,
4237 	skl:2,
4238 	odu:0,
4239 	skr:'км',
4240 };
4241 lx['Китай']={
4242 	ie:'Китай',
4243 	re:'Китая',
4244 	de:'Китаю',
4245 	ve:'Китай',
4246 	te:'Китаем',
4247 	pe:'Китае',
4248 	im:'Китаи',
4249 	rm:'Китаев',
4250 	dm:'Китаям',
4251 	vm:'Китаи',
4252 	tm:'Китаями',
4253 	pm:'Китаях',
4254 	rod:0,
4255 	skl:2,
4256 	odu:0,
4257 };
4258 lx['клавиатура']={
4259 	ie:'клавиатура',
4260 	re:'клавиатуры',
4261 	de:'клавиатуре',
4262 	ve:'клавиатуру',
4263 	te:'клавиатурой',
4264 	pe:'клавиатуре',
4265 	im:'клавиатуры',
4266 	rm:'клавиатур',
4267 	dm:'клавиатурам',
4268 	vm:'клавиатуры',
4269 	tm:'клавиатурами',
4270 	pm:'клавиатурах',
4271 	rod:1,
4272 	skl:1,
4273 	odu:0,
4274 	sbs:0,
4275 	chr:1,
4276 };
4277 lx['компакт-диск']={
4278 	ie:'компакт-диск',
4279 	re:'компакт-диска',
4280 	de:'компакт-диску',
4281 	ve:'компакт-диск',
4282 	te:'компакт-диском',
4283 	pe:'компакт-диске',
4284 	im:'компакт-диски',
4285 	rm:'компакт-дисков',
4286 	dm:'компакт-дискам',
4287 	vm:'компакт-диски',
4288 	tm:'компакт-дисками',
4289 	pm:'компакт-дисках',
4290 	rod:0,
4291 	skl:2,
4292 	odu:0,
4293 };
4294 lx['конструкция']={
4295 	ie:'конструкция',
4296 	re:'конструкции',
4297 	de:'конструкции',
4298 	ve:'конструкцию',
4299 	te:'конструкцией',
4300 	pe:'конструкции',
4301 	im:'конструкции',
4302 	rm:'конструкций',
4303 	dm:'конструкциям',
4304 	vm:'конструкции',
4305 	tm:'конструкциями',
4306 	pm:'конструкциях',
4307 	rod:1,
4308 	skl:1,
4309 	odu:0,
4310 };
4311 lx['копейка']={
4312 	ie:'копейка',
4313 	re:'копейки',
4314 	de:'копейке',
4315 	ve:'копейку',
4316 	te:'копейкой',
4317 	pe:'копейке',
4318 	im:'копейки',
4319 	rm:'копеек',
4320 	dm:'копейкам',
4321 	vm:'копейки',
4322 	tm:'копейками',
4323 	pm:'копейках',
4324 	rod:1,
4325 	skl:1,
4326 	odu:0,
4327 	sbs:0,
4328 	chr:1,
4329 };
4330 lx['корабль']={
4331 	ie:'корабль',
4332 	re:'корабля',
4333 	de:'кораблю',
4334 	ve:'корабль',
4335 	te:'кораблём',
4336 	pe:'корабле',
4337 	im:'корабли',
4338 	rm:'кораблей',
4339 	dm:'кораблям',
4340 	vm:'корабли',
4341 	tm:'кораблями',
4342 	pm:'кораблях',
4343 	rod:0,
4344 	skl:2,
4345 	odu:0,
4346 };
4347 lx['Красноярск']={
4348 	ie:'Красноярск',
4349 	re:'Красноярска',
4350 	de:'Красноярску',
4351 	ve:'Красноярск',
4352 	te:'Красноярском',
4353 	pe:'Красноярске',
4354 	im:'Красноярски',
4355 	rm:'Красноярсков',
4356 	dm:'Красноярскам',
4357 	vm:'Красноярски',
4358 	tm:'Красноярсками',
4359 	pm:'Красноярсках',
4360 	rod:0,
4361 	skl:2,
4362 	odu:0,
4363 };
4364 lx['Кристина']={
4365 	ie:'Кристина',
4366 	re:'Кристины',
4367 	de:'Кристине',
4368 	ve:'Кристину',
4369 	te:'Кристиной',
4370 	pe:'Кристине',
4371 	im:'Кристины',
4372 	rm:'Кристин',
4373 	dm:'Кристинам',
4374 	vm:'Кристин',
4375 	tm:'Кристинами',
4376 	pm:'Кристинах',
4377 	rod:1,
4378 	skl:1,
4379 	odu:0,
4380 };
4381 lx['Куба']={
4382 	ie:'Куба',
4383 	re:'Кубы',
4384 	de:'Кубе',
4385 	ve:'Кубу',
4386 	te:'Кубой',
4387 	pe:'Кубе',
4388 	im:'Кубы',
4389 	rm:'Куб',
4390 	dm:'Кубам',
4391 	vm:'Кубы',
4392 	tm:'Кубами',
4393 	pm:'Кубах',
4394 	rod:1,
4395 	skl:1,
4396 	odu:0,
4397 };
4398 lx['кубометр']={
4399 	ie:'кубометр',
4400 	re:'кубометра',
4401 	de:'кубометру',
4402 	ve:'кубометр',
4403 	te:'кубометром',
4404 	pe:'кубометре',
4405 	im:'кубометры',
4406 	rm:'кубометров',
4407 	dm:'кубометрам',
4408 	vm:'кубометры',
4409 	tm:'кубометрами',
4410 	pm:'кубометрах',
4411 	rod:0,
4412 	skl:2,
4413 	odu:0,
4414 };
4415 lx['литр']={
4416 	ie:'литр',
4417 	re:'литра',
4418 	de:'литру',
4419 	ve:'литр',
4420 	te:'литром',
4421 	pe:'литре',
4422 	im:'литры',
4423 	rm:'литров',
4424 	dm:'литрам',
4425 	vm:'литры',
4426 	tm:'литрами',
4427 	pm:'литрах',
4428 	rod:0,
4429 	skl:2,
4430 	odu:0,
4431 }; 
4432 lx['луч']={
4433 	ie:'луч',
4434 	re:'луча',
4435 	de:'лучу',
4436 	ve:'луч',
4437 	te:'лучом',
4438 	pe:'луче',
4439 	im:'лучи',
4440 	rm:'лучей',
4441 	dm:'лучам',
4442 	vm:'лучи',
4443 	tm:'лучами',
4444 	pm:'лучах',
4445 	rod:0,
4446 	skl:2,
4447 	odu:0,
4448 };
4449 lx['Магадан']={
4450 	ie:'Магадан',
4451 	re:'Магадана',
4452 	de:'Магадану',
4453 	ve:'Магадан',
4454 	te:'Магаданом',
4455 	pe:'Магадане',
4456 	im:'Магаданы',
4457 	rm:'Магаданов',
4458 	dm:'Магаданам',
4459 	vm:'Магаданы',
4460 	tm:'Магаданами',
4461 	pm:'Магаданах',
4462 	rod:0,
4463 	skl:2,
4464 	odu:0,
4465 };
4466 lx['магазин']={
4467 	ie:'магазин',
4468 	re:'магазина',
4469 	de:'магазину',
4470 	ve:'магазин',
4471 	te:'магазином',
4472 	pe:'магазине',
4473 	im:'магазины',
4474 	rm:'магазинов',
4475 	dm:'магазинам',
4476 	vm:'магазины',
4477 	tm:'магазинами',
4478 	pm:'магазинах',
4479 	rod:0,
4480 	skl:2,
4481 	odu:0,
4482 };
4483 lx['магия']={
4484 	ie:'магия',
4485 	re:'магии',
4486 	de:'магии',
4487 	ve:'магию',
4488 	te:'магией',
4489 	pe:'магии',
4490 	im:'магии',
4491 	rm:'магий',
4492 	dm:'магиям',
4493 	vm:'магии',
4494 	tm:'магиями',
4495 	pm:'магиях',
4496 	rod:1,
4497 	skl:1,
4498 	odu:0,
4499 };
4500 lx['май']={
4501 	ie:'май',
4502 	re:'мая',
4503 	de:'маю',
4504 	ve:'май',
4505 	te:'маем',
4506 	pe:'мае',
4507 	im:'маи',
4508 	rm:'маев',
4509 	dm:'маям',
4510 	vm:'маи',
4511 	tm:'маями',
4512 	pm:'маях',
4513 	rod:0,
4514 	skl:2,
4515 	odu:0,
4516 };
4517 lx['Мария']={
4518 	ie:'Мария',
4519 	re:'Марии',
4520 	de:'Марии',
4521 	ve:'Марию',
4522 	te:'Марией',
4523 	pe:'Марии',
4524 	im:'Марии',
4525 	rm:'Марий',
4526 	dm:'Мариям',
4527 	vm:'Марии',
4528 	tm:'Мариями',
4529 	pm:'Мариях',
4530 	rod:1,
4531 	skl:1,
4532 	odu:0,
4533 };
4534 lx['март']={
4535 	ie:'март',
4536 	re:'марта',
4537 	de:'марту',
4538 	ve:'март',
4539 	te:'мартом',
4540 	pe:'марте',
4541 	im:'марты',
4542 	rm:'мартов',
4543 	dm:'мартам',
4544 	vm:'марты',
4545 	tm:'мартами',
4546 	pm:'мартах',
4547 	rod:0,
4548 	skl:2,
4549 	odu:0,
4550 };
4551 lx['матрёшка']={
4552 	ie:'матрёшка',
4553 	re:'матрёшки',
4554 	de:'матрёшке',
4555 	ve:'матрёшку',
4556 	te:'матрёшкой',
4557 	pe:'матрёшке',
4558 	im:'матрёшки',
4559 	rm:'матрёшек',
4560 	dm:'матрёшкам',
4561 	vm:'матрёшки',
4562 	tm:'матрёшками',
4563 	pm:'матрёшках',
4564 	rod:1,
4565 	skl:1,
4566 	odu:0,
4567 };
4568 lx['Мексика']={
4569 	ie:'Мексика',
4570 	re:'Мексики',
4571 	de:'Мексике',
4572 	ve:'Мексику',
4573 	te:'Мексикой',
4574 	pe:'Мексике',
4575 	im:'Мексики',
4576 	rm:'Мексик',
4577 	dm:'Мексикам',
4578 	vm:'Мексики',
4579 	tm:'Мексиками',
4580 	pm:'Мексиках',
4581 	rod:1,
4582 	skl:1,
4583 	odu:0,
4584 };
4585 lx['меню']={
4586 	ie:'меню',
4587 	re:'меню',
4588 	de:'меню',
4589 	ve:'меню',
4590 	te:'меню',
4591 	pe:'меню',
4592 	im:'меню',
4593 	rm:'меню',
4594 	dm:'меню',
4595 	vm:'меню',
4596 	tm:'меню',
4597 	pm:'меню',
4598 	rod:2,
4599 	skl:0,
4600 	odu:0,
4601 };
4602 lx['месяц']={
4603 	ie:'месяц',
4604 	re:'месяца',
4605 	de:'месяцу',
4606 	ve:'месяц',
4607 	te:'месяцем',
4608 	pe:'месяце',
4609 	im:'месяцы',
4610 	rm:'месяцев',
4611 	dm:'месяцам',
4612 	vm:'месяцы',
4613 	tm:'месяцами',
4614 	pm:'месяцах',
4615 	rod:0,
4616 	skl:2,
4617 	odu:0,
4618 };
4619 lx['метр']={
4620 	ie:'метр',
4621 	re:'метра',
4622 	de:'метру',
4623 	ve:'метр',
4624 	te:'метром',
4625 	pe:'метре',
4626 	im:'метры',
4627 	rm:'метров',
4628 	dm:'метрам',
4629 	vm:'метры',
4630 	tm:'метрами',
4631 	pm:'метрах',
4632 	rod:0,
4633 	skl:2,
4634 	odu:0,
4635 	skr:'м',
4636 };
4637 lx['мешок']={
4638 	ie:'мешок',
4639 	re:'мешка',
4640 	de:'мешку',
4641 	ve:'мешок',
4642 	te:'мешком',
4643 	pe:'мешке',
4644 	im:'мешки',
4645 	rm:'мешков',
4646 	dm:'мешкам',
4647 	vm:'мешки',
4648 	tm:'мешками',
4649 	pm:'мешках',
4650 	rod:0,
4651 	skl:2,
4652 	odu:0,
4653 };
4654 lx['миллиметр']={
4655 	ie:'миллиметр',
4656 	re:'миллиметра',
4657 	de:'миллиметру',
4658 	ve:'миллиметр',
4659 	te:'миллиметром',
4660 	pe:'миллиметре',
4661 	im:'миллиметры',
4662 	rm:'миллиметров',
4663 	dm:'миллиметрам',
4664 	vm:'миллиметры',
4665 	tm:'миллиметрами',
4666 	pm:'миллиметрах',
4667 	rod:0,
4668 	skl:2,
4669 	odu:0,
4670 	skr:'мм',
4671 };
4672 lx['министерство']={
4673 	ie:'министерство',
4674 	re:'министерства',
4675 	de:'министерству',
4676 	ve:'министерство',
4677 	te:'министерством',
4678 	pe:'министерстве',
4679 	im:'министерства',
4680 	rm:'министерств',
4681 	dm:'министерствам',
4682 	vm:'министерства',
4683 	tm:'министерствами',
4684 	pm:'министерствах',
4685 	rod:2,
4686 	skl:2,
4687 	odu:0,
4688 };
4689 lx['Минобрнауки']={
4690 	ie:'Минобрнауки',
4691 	re:'Минобрнауки',
4692 	de:'Минобрнауки',
4693 	ve:'Минобрнауки',
4694 	te:'Минобрнауки',
4695 	pe:'Минобрнауки',
4696 	im:'Минобрнауки',
4697 	rm:'Минобрнауки',
4698 	dm:'Минобрнауки',
4699 	vm:'Минобрнауки',
4700 	tm:'Минобрнауки',
4701 	pm:'Минобрнауки',
4702 	rod:2,
4703 	skl:0,
4704 	odu:0,
4705 };
4706 lx['минута']={
4707 	ie:'минута',
4708 	re:'минуты',
4709 	de:'минуте',
4710 	ve:'минуту',
4711 	te:'минутой',
4712 	pe:'минуте',
4713 	im:'минуты',
4714 	rm:'минут',
4715 	dm:'минутам',
4716 	vm:'минуты',
4717 	tm:'минутами',
4718 	pm:'минутах',
4719 	rod:1,
4720 	skl:1,
4721 	odu:0,
4722 };
4723 lx['Москва']={
4724 	ie:'Москва',
4725 	re:'Москвы',
4726 	de:'Москве',
4727 	ve:'Москву',
4728 	te:'Москвой',
4729 	pe:'Москве',
4730 	im:'Москвы',
4731 	rm:'Москв',
4732 	dm:'Москвам',
4733 	vm:'Москвы',
4734 	tm:'Москвами',
4735 	pm:'Москвах',
4736 	rod:1,
4737 	skl:1,
4738 	odu:0,
4739 	sbs:1,
4740 	chr:1,
4741 };
4742 lx['"Москвич"']={
4743 	ie:'"Москвич"',
4744 	re:'"Москвича"',
4745 	de:'"Москвичу"',
4746 	ve:'"Москвич"',
4747 	te:'"Москвичом"',
4748 	pe:'"Москвиче"',
4749 	im:'"Москвичи"',
4750 	rm:'"Москвичей"',
4751 	dm:'"Москвичам"',
4752 	vm:'"Москвичи"',
4753 	tm:'"Москвичами"',
4754 	pm:'"Москвичах"',
4755 	rod:0,
4756 	skl:2,
4757 	odu:0,
4758 };
4759 lx['наукоград']={
4760 	ie:'наукоград',
4761 	re:'наукограда',
4762 	de:'наукограду',
4763 	ve:'наукоград',
4764 	te:'наукоградом',
4765 	pe:'наукограде',
4766 	im:'наукограды',
4767 	rm:'наукоградов',
4768 	dm:'наукоградам',
4769 	vm:'наукограды',
4770 	tm:'наукоградами',
4771 	pm:'наукоградах',
4772 	rod:0,
4773 	skl:2,
4774 	odu:0,
4775 };
4776 lx['неделя']={
4777 	ie:'неделя',
4778 	re:'недели',
4779 	de:'неделе',
4780 	ve:'неделю',
4781 	te:'неделей',
4782 	pe:'неделе',
4783 	im:'недели',
4784 	rm:'недель',
4785 	dm:'неделям',
4786 	vm:'недели',
4787 	tm:'неделями',
4788 	pm:'неделях',
4789 	rod:1,
4790 	skl:1,
4791 	odu:0,
4792 };
4793 lx['Николаевна']={
4794 	ie:'Николаевна',
4795 	re:'Николаевны',
4796 	de:'Николаевне',
4797 	ve:'Николаевну',
4798 	te:'Николаевной',
4799 	pe:'Николаевне',
4800 	im:'Николаевны',
4801 	rm:'Николаевн',
4802 	dm:'Николаевнам',
4803 	vm:'Николаевн',
4804 	tm:'Николаевнами',
4805 	pm:'Николаевнах',
4806 	rod:1,
4807 	skl:1,
4808 	odu:0,
4809 };
4810 lx['ноябрь']={
4811 	ie:'ноябрь',
4812 	re:'ноября',
4813 	de:'ноябрю',
4814 	ve:'ноябрь',
4815 	te:'ноябрём',
4816 	pe:'ноябре',
4817 	im:'ноябри',
4818 	rm:'ноябрей',
4819 	dm:'ноябрям',
4820 	vm:'ноябри',
4821 	tm:'ноябрями',
4822 	pm:'ноябрях',
4823 	rod:0,
4824 	skl:2,
4825 	odu:0,
4826 };
4827 lx['октябрь']={
4828 	ie:'октябрь',
4829 	re:'октября',
4830 	de:'октябрю',
4831 	ve:'октябрь',
4832 	te:'октябрём',
4833 	pe:'октябре',
4834 	im:'октябри',
4835 	rm:'октябрей',
4836 	dm:'октябрям',
4837 	vm:'октябри',
4838 	tm:'октябрями',
4839 	pm:'октябрях',
4840 	rod:0,
4841 	skl:2,
4842 	odu:0,
4843 };
4844 lx['Олеся']={
4845 	ie:'Олеся',
4846 	re:'Олеси',
4847 	de:'Олесе',
4848 	ve:'Олесю',
4849 	te:'Олесей',
4850 	pe:'Олесе',
4851 	im:'Олеси',
4852 	rm:'Олесь',
4853 	dm:'Олесям',
4854 	vm:'Олесь',
4855 	tm:'Олесями',
4856 	pm:'Олесях',
4857 	rod:1,
4858 	skl:1,
4859 	odu:0,
4860 };
4861 lx['Ольга']={
4862 	ie:'Ольга',
4863 	re:'Ольги',
4864 	de:'Ольге',
4865 	ve:'Ольгу',
4866 	te:'Ольгой',
4867 	pe:'Ольге',
4868 	im:'Ольги',
4869 	rm:'Ольг',
4870 	dm:'Ольгам',
4871 	vm:'Ольг',
4872 	tm:'Ольгами',
4873 	pm:'Ольгах',
4874 	rod:1,
4875 	skl:1,
4876 	odu:0,
4877 };
4878 lx['отрезок']={
4879 	ie:'отрезок',
4880 	re:'отрезка',
4881 	de:'отрезку',
4882 	ve:'отрезок',
4883 	te:'отрезком',
4884 	pe:'отрезке',
4885 	im:'отрезки',
4886 	rm:'отрезков',
4887 	dm:'отрезкам',
4888 	vm:'отрезки',
4889 	tm:'отрезками',
4890 	pm:'отрезках',
4891 	rod:0,
4892 	skl:2,
4893 	odu:0,
4894 };
4895 lx['офис']={
4896 	ie:'офис',
4897 	re:'офиса',
4898 	de:'офису',
4899 	ve:'офис',
4900 	te:'офисом',
4901 	pe:'офисе',
4902 	im:'офисы',
4903 	rm:'офисов',
4904 	dm:'офисам',
4905 	vm:'офисы',
4906 	tm:'офисами',
4907 	pm:'офисах',
4908 	rod:0,
4909 	skl:2,
4910 	odu:0,
4911 };
4912 lx['параллелограмм']={
4913 	ie:'параллелограмм',
4914 	re:'параллелограмма',
4915 	de:'параллелограмму',
4916 	ve:'параллелограмм',
4917 	te:'параллелограммом',
4918 	pe:'параллелограмме',
4919 	im:'параллелограммы',
4920 	rm:'параллелограммов',
4921 	dm:'параллелограммам',
4922 	vm:'параллелограммы',
4923 	tm:'параллелограммами',
4924 	pm:'параллелограммах',
4925 	rod:0,
4926 	skl:2,
4927 	odu:0,
4928 };
4929 lx['пароход']={
4930 	ie:'пароход',
4931 	re:'парохода',
4932 	de:'пароходу',
4933 	ve:'пароход',
4934 	te:'пароходом',
4935 	pe:'пароходе',
4936 	im:'пароходы',
4937 	rm:'пароходов',
4938 	dm:'пароходам',
4939 	vm:'пароходы',
4940 	tm:'пароходами',
4941 	pm:'пароходах',
4942 	rod:0,
4943 	skl:2,
4944 	odu:0,
4945 };
4946 lx['ПГТ']={
4947 	ie:'ПГТ',
4948 	re:'ПГТ',
4949 	de:'ПГТ',
4950 	ve:'ПГТ',
4951 	te:'ПГТ',
4952 	pe:'ПГТ',
4953 	im:'ПГТ',
4954 	rm:'ПГТ',
4955 	dm:'ПГТ',
4956 	vm:'ПГТ',
4957 	tm:'ПГТ',
4958 	pm:'ПГТ',
4959 	rod:0,
4960 	skl:0,
4961 	odu:0,
4962 };
4963 lx['пенобетон']={
4964 	ie:'пенобетон',
4965 	re:'пенобетона',
4966 	de:'пенобетону',
4967 	ve:'пенобетон',
4968 	te:'пенобетоном',
4969 	pe:'пенобетоне',
4970 	im:'пенобетоны',
4971 	rm:'пенобетонов',
4972 	dm:'пенобетонам',
4973 	vm:'пенобетоны',
4974 	tm:'пенобетонами',
4975 	pm:'пенобетонах',
4976 	rod:0,
4977 	skl:2,
4978 	odu:0,
4979 };
4980 lx['песок']={
4981 	ie:'песок',
4982 	re:'песка',
4983 	de:'песку',
4984 	ve:'песок',
4985 	te:'песком',
4986 	pe:'песке',
4987 	im:'пески',
4988 	rm:'песков',
4989 	dm:'пескам',
4990 	vm:'пески',
4991 	tm:'песками',
4992 	pm:'песках',
4993 	rod:0,
4994 	skl:2,
4995 	odu:0,
4996 };
4997 lx['песчаник']={
4998 	ie:'песчаник',
4999 	re:'песчаника',
5000 	de:'песчанику',
5001 	ve:'песчаник',
5002 	te:'песчаником',
5003 	pe:'песчанике',
5004 	im:'песчаники',
5005 	rm:'песчаников',
5006 	dm:'песчаникам',
5007 	vm:'песчаники',
5008 	tm:'песчаниками',
5009 	pm:'песчаниках',
5010 	rod:0,
5011 	skl:2,
5012 	odu:0,
5013 };
5014 lx['Петровна']={
5015 	ie:'Петровна',
5016 	re:'Петровны',
5017 	de:'Петровне',
5018 	ve:'Петровну',
5019 	te:'Петровной',
5020 	pe:'Петровне',
5021 	im:'Петровны',
5022 	rm:'Петровн',
5023 	dm:'Петровнам',
5024 	vm:'Петровн',
5025 	tm:'Петровнами',
5026 	pm:'Петровнах',
5027 	rod:1,
5028 	skl:1,
5029 	odu:0,
5030 };
5031 lx['пирожок']={
5032 	ie:'пирожок',
5033 	re:'пирожка',
5034 	de:'пирожку',
5035 	ve:'пирожок',
5036 	te:'пирожком',
5037 	pe:'пирожке',
5038 	im:'пирожки',
5039 	rm:'пирожков',
5040 	dm:'пирожкам',
5041 	vm:'пирожки',
5042 	tm:'пирожами',
5043 	pm:'пирожах',
5044 	rod:0,
5045 	skl:2,
5046 	odu:0,
5047 };
5048 lx['поезд']={
5049 	ie:'поезд',
5050 	re:'поезда',
5051 	de:'поезду',
5052 	ve:'поезд',
5053 	te:'поездом',
5054 	pe:'поезде',
5055 	im:'поезды',
5056 	rm:'поездов',
5057 	dm:'поездам',
5058 	vm:'поезды',
5059 	tm:'поездами',
5060 	pm:'поездах',
5061 	rod:0,
5062 	skl:2,
5063 	odu:0,
5064 };
5065 lx['полуинтервал']={
5066 	ie:'полуинтервал',
5067 	re:'полуинтервала',
5068 	de:'полуинтервалу',
5069 	ve:'полуинтервал',
5070 	te:'полуинтервалом',
5071 	pe:'полуинтервале',
5072 	im:'полуинтервалы',
5073 	rm:'полуинтервалов',
5074 	dm:'полуинтервалам',
5075 	vm:'полуинтервалы',
5076 	tm:'полуинтервалами',
5077 	pm:'полуинтервалах',
5078 	rod:0,
5079 	skl:2,
5080 	odu:0,
5081 };
5082 lx['Польша']={
5083 	ie:'Польша',
5084 	re:'Польши',
5085 	de:'Польше',
5086 	ve:'Польшу',
5087 	te:'Польшой',
5088 	pe:'Польше',
5089 	im:'Польши',
5090 	rm:'Польш',
5091 	dm:'Польшам',
5092 	vm:'Польши',
5093 	tm:'Польшами',
5094 	pm:'Польшах',
5095 	rod:1,
5096 	skl:1,
5097 	odu:0,
5098 };
5099 lx['понедельник']={
5100 	ie:'понедельник',
5101 	re:'понедельника',
5102 	de:'понедельнику',
5103 	ve:'понедельник',
5104 	te:'понедельником',
5105 	pe:'понедельнике',
5106 	im:'понедельники',
5107 	rm:'понедельников',
5108 	dm:'понедельникам',
5109 	vm:'понедельники',
5110 	tm:'понедельниками',
5111 	pm:'понедельниках',
5112 	rod:0,
5113 	skl:2,
5114 	odu:0,
5115 };
5116 lx['посёлок']={
5117 	ie:'посёлок',
5118 	re:'посёлка',
5119 	de:'посёлку',
5120 	ve:'посёлок',
5121 	te:'посёлком',
5122 	pe:'посёлке',
5123 	im:'посёлки',
5124 	rm:'посёлков',
5125 	dm:'посёлкам',
5126 	vm:'посёлки',
5127 	tm:'посёлками',
5128 	pm:'посёлках',
5129 	rod:0,
5130 	skl:2,
5131 	odu:0,
5132 };
5133 lx['программистка']={
5134 	ie:'программистка',
5135 	re:'программистки',
5136 	de:'программистке',
5137 	ve:'программистку',
5138 	te:'программисткой',
5139 	pe:'программистке',
5140 	im:'программистки',
5141 	rm:'программисток',
5142 	dm:'программисткам',
5143 	vm:'программисток',
5144 	tm:'программистками',
5145 	pm:'программистках',
5146 	rod:1,
5147 	skl:1,
5148 	odu:0,
5149 };
5150 lx['промежуток']={
5151 	ie:'промежуток',
5152 	re:'промежутка',
5153 	de:'промежутку',
5154 	ve:'промежуток',
5155 	te:'промежутком',
5156 	pe:'промежутке',
5157 	im:'промежутки',
5158 	rm:'промежутков',
5159 	dm:'промежуткам',
5160 	vm:'промежутки',
5161 	tm:'промежутками',
5162 	pm:'промежутках',
5163 	rod:0,
5164 	skl:2,
5165 	odu:0,
5166 };
5167 lx['прямоугольник']={
5168 	ie:'прямоугольник',
5169 	re:'прямоугольника',
5170 	de:'прямоугольнику',
5171 	ve:'прямоугольник',
5172 	te:'прямоугольником',
5173 	pe:'прямоугольнике',
5174 	im:'прямоугольники',
5175 	rm:'прямоугольников',
5176 	dm:'прямоугольникам',
5177 	vm:'прямоугольники',
5178 	tm:'прямоугольниками',
5179 	pm:'прямоугольниках',
5180 	rod:0,
5181 	skl:2,
5182 	odu:0,
5183 };
5184 lx['пункт']={
5185 	ie:'пункт',
5186 	re:'пункта',
5187 	de:'пункту',
5188 	ve:'пункт',
5189 	te:'пунктом',
5190 	pe:'пункте',
5191 	im:'пункты',
5192 	rm:'пунктов',
5193 	dm:'пунктам',
5194 	vm:'пункты',
5195 	tm:'пунктами',
5196 	pm:'пунктах',
5197 	rod:0,
5198 	skl:2,
5199 	odu:0,
5200 };
5201 lx['путь']={
5202 	ie:'путь',
5203 	re:'пути',
5204 	de:'пути',
5205 	ve:'путь',
5206 	te:'путём',
5207 	pe:'пути',
5208 	im:'пути',
5209 	rm:'путей',
5210 	dm:'путям',
5211 	vm:'пути',
5212 	tm:'путями',
5213 	pm:'путях',
5214 	rod:0,
5215 	skl:2,
5216 	odu:0,
5217 };
5218 lx['пятница']={
5219 	ie:'пятница',
5220 	re:'пятницы',
5221 	de:'пятнице',
5222 	ve:'пятницу',
5223 	te:'пятницей',
5224 	pe:'пятнице',
5225 	im:'пятницы',
5226 	rm:'пятниц',
5227 	dm:'пятницам',
5228 	vm:'пятницы',
5229 	tm:'пятницами',
5230 	pm:'пятницах',
5231 	rod:1,
5232 	skl:1,
5233 	odu:0,
5234 };
5235 lx['раствор']={
5236 	ie:'раствор',
5237 	re:'раствора',
5238 	de:'раствору',
5239 	ve:'раствор',
5240 	te:'раствором',
5241 	pe:'растворе',
5242 	im:'растворы',
5243 	rm:'растворов',
5244 	dm:'растворам',
5245 	vm:'растворы',
5246 	tm:'растворами',
5247 	pm:'растворах',
5248 	rod:0,
5249 	skl:2,
5250 	odu:0,
5251 };
5252 lx['ребёнок']={
5253 	ie:'ребёнок',
5254 	re:'ребёнка',
5255 	de:'ребёнку',
5256 	ve:'ребёнка',
5257 	te:'ребёнком',
5258 	pe:'ребёнке',
5259 	im:'ребята',
5260 	rm:'ребят',
5261 	dm:'ребятам',
5262 	vm:'ребят',
5263 	tm:'ребятами',
5264 	pm:'ребятах',
5265 	rod:0,
5266 	skl:2,
5267 	odu:1,
5268 	sbs:0,
5269 	chr:1,
5270 };
5271 lx['ромб']={
5272 	ie:'ромб',
5273 	re:'ромба',
5274 	de:'ромбу',
5275 	ve:'ромб',
5276 	te:'ромбом',
5277 	pe:'ромбе',
5278 	im:'ромбы',
5279 	rm:'ромбов',
5280 	dm:'ромбам',
5281 	vm:'ромбы',
5282 	tm:'ромбами',
5283 	pm:'ромбах',
5284 	rod:0,
5285 	skl:2,
5286 	odu:0,
5287 };
5288 lx['Рособрнадзор']={
5289 	ie:'Рособрнадзор',
5290 	re:'Рособрнадзора',
5291 	de:'Рособрнадзору',
5292 	ve:'Рособрнадзор',
5293 	te:'Рособрнадзором',
5294 	pe:'Рособрнадзоре',
5295 	im:'Рособрнадзоры',
5296 	rm:'Рособрнадзоров',
5297 	dm:'Рособрнадзорам',
5298 	vm:'Рособрнадзоры',
5299 	tm:'Рособрнадзорами',
5300 	pm:'Рособрнадзорах',
5301 	rod:0,
5302 	skl:2,
5303 	odu:0,
5304 };
5305 lx['Россия']={
5306 	ie:'Россия',
5307 	re:'России',
5308 	de:'России',
5309 	ve:'Россию',
5310 	te:'Россией',
5311 	pe:'России',
5312 	im:'России',
5313 	rm:'Россий',
5314 	dm:'Россиям',
5315 	vm:'России',
5316 	tm:'Россиями',
5317 	pm:'Россиях',
5318 	rod:1,
5319 	skl:1,
5320 	odu:0,
5321 };
5322 lx['ртуть']={
5323 	ie:'ртуть',
5324 	re:'ртути',
5325 	de:'ртути',
5326 	ve:'ртуть',
5327 	te:'ртутью',
5328 	pe:'ртути',
5329 	im:'ртути',
5330 	rm:'ртутей',
5331 	dm:'ртутям',
5332 	vm:'ртути',
5333 	tm:'ртутями',
5334 	pm:'ртутях',
5335 	rod:1,
5336 	skl:3,
5337 	odu:0,
5338 };
5339 lx['рубль']={
5340 	ie:'рубль',
5341 	re:'рубля',
5342 	de:'рублю',
5343 	ve:'рубль',
5344 	te:'рублём',
5345 	pe:'рубле',
5346 	im:'рубли',
5347 	rm:'рублей',
5348 	dm:'рублям',
5349 	vm:'рубли',
5350 	tm:'рублями',
5351 	pm:'рублях',
5352 	rod:0,
5353 	skl:2,
5354 	odu:0,
5355 };
5356 lx['рука']={
5357 	ie:'рука',
5358 	re:'руки',
5359 	de:'руке',
5360 	ve:'руку',
5361 	te:'рукой',
5362 	pe:'руке',
5363 	im:'руки',
5364 	rm:'рук',
5365 	dm:'рукам',
5366 	vm:'руки',
5367 	tm:'руками',
5368 	pm:'руках',
5369 	rod:1,
5370 	skl:1,
5371 	odu:0,
5372 };
5373 lx['ручка']={
5374 	ie:'ручка',
5375 	re:'ручки',
5376 	de:'ручке',
5377 	ve:'ручку',
5378 	te:'ручкой',
5379 	pe:'ручке',
5380 	im:'ручки',
5381 	rm:'ручек',
5382 	dm:'ручкам',
5383 	vm:'ручки',
5384 	tm:'ручками',
5385 	pm:'ручках',
5386 	rod:1,
5387 	skl:1,
5388 	odu:0,
5389 };
5390 lx['Санкт-Петербург']={
5391 	ie:'Санкт-Петербург',
5392 	re:'Санкт-Петербурга',
5393 	de:'Санкт-Петербургу',
5394 	ve:'Санкт-Петербург',
5395 	te:'Санкт-Петербургом',
5396 	pe:'Санкт-Петербурге',
5397 	im:'Санкт-Петербурги',
5398 	rm:'Санкт-Петербургов',
5399 	dm:'Санкт-Петербургам',
5400 	vm:'Санкт-Петербурги',
5401 	tm:'Санкт-Петербургами',
5402 	pm:'Санкт-Петербургах',
5403 	rod:0,
5404 	skl:2,
5405 	odu:0,
5406 };
5407 lx['сантиметр']={
5408 	ie:'сантиметр',
5409 	re:'сантиметра',
5410 	de:'сантиметру',
5411 	ve:'сантиметр',
5412 	te:'сантиметром',
5413 	pe:'сантиметре',
5414 	im:'сантиметры',
5415 	rm:'сантиметров',
5416 	dm:'сантиметрам',
5417 	vm:'сантиметры',
5418 	tm:'сантиметрами',
5419 	pm:'сантиметрах',
5420 	rod:0,
5421 	skl:2,
5422 	odu:0,
5423 	skr:'см',
5424 };
5425 lx['секретариат']={
5426 	ie:'секретариат',
5427 	re:'секретариата',
5428 	de:'секретариату',
5429 	ve:'секретариат',
5430 	te:'секретариатом',
5431 	pe:'секретариате',
5432 	im:'секретариаты',
5433 	rm:'секретариатов',
5434 	dm:'секретариатам',
5435 	vm:'секретариаты',
5436 	tm:'секретариатами',
5437 	pm:'секретариатах',
5438 	rod:0,
5439 	skl:2,
5440 	odu:0,
5441 };
5442 lx['село']={
5443 	ie:'село',
5444 	re:'села',
5445 	de:'селу',
5446 	ve:'село',
5447 	te:'селом',
5448 	pe:'селе',
5449 	im:'сёла',
5450 	rm:'сёл',
5451 	dm:'сёлам',
5452 	vm:'сёла',
5453 	tm:'сёлами',
5454 	pm:'сёлах',
5455 	rod:2,
5456 	skl:2,
5457 	odu:0,
5458 };
5459 lx['Семилуки']={
5460         ie:'Семилуки',
5461         re:'Семилук',
5462         de:'Семилукам',
5463         ve:'Семилуки',
5464         te:'Семилуками',
5465         pe:'Семилуках',
5466         im:'Семилуки',
5467         rm:'Семилук',
5468         dm:'Семилукам',
5469         vm:'Семилуки',
5470         tm:'Семилуками',
5471         pm:'Семилуках',
5472         rod:3,
5473         skl:2,
5474         odu:0,
5475 };
5476 lx['сентябрь']={
5477 	ie:'сентябрь',
5478 	re:'сентября',
5479 	de:'сентябрю',
5480 	ve:'сентябрь',
5481 	te:'сентябре',
5482 	pe:'сентябре',
5483 	im:'сентябри',
5484 	rm:'сентябрей',
5485 	dm:'сентябрям',
5486 	vm:'сентябри',
5487 	tm:'сентябрями',
5488 	pm:'сентябрях',
5489 	rod:0,
5490 	skl:2,
5491 	odu:0,
5492 };
5493 lx['Сербия']={
5494 	ie:'Сербия',
5495 	re:'Сербии',
5496 	de:'Сербии',
5497 	ve:'Сербию',
5498 	te:'Сербией',
5499 	pe:'Сербии',
5500 	im:'Сербии',
5501 	rm:'Сербий',
5502 	dm:'Сербиям',
5503 	vm:'Сербии',
5504 	tm:'Сербиями',
5505 	pm:'Сербиях',
5506 	rod:1,
5507 	skl:1,
5508 	odu:0,
5509 };
5510 lx['Сергеевна']={
5511 	ie:'Сергеевна',
5512 	re:'Сергеевны',
5513 	de:'Сергеевне',
5514 	ve:'Сергеевну',
5515 	te:'Сергеевной',
5516 	pe:'Сергеевне',
5517 	im:'Сергеевны',
5518 	rm:'Сергеевн',
5519 	dm:'Сергеевнам',
5520 	vm:'Сергеевн',
5521 	tm:'Сергеевнами',
5522 	pm:'Сергеевнах',
5523 	rod:1,
5524 	skl:1,
5525 	odu:0,
5526 };
5527 lx['склонение']={
5528 	ie:'склонение',
5529 	re:'склонения',
5530 	de:'склонению',
5531 	ve:'склонение',
5532 	te:'склонением',
5533 	pe:'склонении',
5534 	im:'склонения',
5535 	rm:'склонений',
5536 	dm:'склонениям',
5537 	vm:'склонения',
5538 	tm:'склонениями',
5539 	pm:'склонениях',
5540 	rod:2,
5541 	skl:2,
5542 	odu:0,
5543 	sbs:0,
5544 	chr:1,
5545 };
5546 lx['Словакия']={
5547 	ie:'Словакия',
5548 	re:'Словакии',
5549 	de:'Словакии',
5550 	ve:'Словакию',
5551 	te:'Словакией',
5552 	pe:'Словакии',
5553 	im:'Словакии',
5554 	rm:'Словакий',
5555 	dm:'Словакиям',
5556 	vm:'Словакии',
5557 	tm:'Словакиями',
5558 	pm:'Словакиях',
5559 	rod:1,
5560 	skl:1,
5561 	odu:0,
5562 };
5563 lx['словарь']={
5564 	ie:'словарь',
5565 	re:'словаря',
5566 	de:'словарю',
5567 	ve:'словарь',
5568 	te:'словарем',
5569 	pe:'словаре',
5570 	im:'словари',
5571 	rm:'словарей',
5572 	dm:'словарям',
5573 	vm:'словари',
5574 	tm:'словарями',
5575 	pm:'словарях',
5576 	rod:0,
5577 	skl:2,
5578 	odu:0,
5579 	chr:1,
5580 };
5581 lx['Словения']={
5582 	ie:'Словения',
5583 	re:'Словении',
5584 	de:'Словении',
5585 	ve:'Словению',
5586 	te:'Словенией',
5587 	pe:'Словении',
5588 	im:'Словении',
5589 	rm:'Словений',
5590 	dm:'Словениям',
5591 	vm:'Словении',
5592 	tm:'Словениями',
5593 	pm:'Словениях',
5594 	rod:1,
5595 	skl:1,
5596 	odu:0,
5597 };
5598 lx['слово']={
5599 	ie:'слово',
5600 	re:'слова',
5601 	de:'слову',
5602 	ve:'слове',
5603 	te:'словом',
5604 	pe:'слове',
5605 	im:'слова',
5606 	rm:'слов',
5607 	dm:'словам',
5608 	vm:'слова',
5609 	tm:'словами',
5610 	pm:'словах',
5611 	rod:2,
5612 	skl:2,
5613 	odu:0,
5614 	chr:1,
5615 };
5616 lx['солярка']={
5617 	ie:'солярка',
5618 	re:'солярки',
5619 	de:'солярке',
5620 	ve:'солярку',
5621 	te:'соляркой',
5622 	pe:'солярке',
5623 	im:'солярки',
5624 	rm:'солярк',
5625 	dm:'соляркам',
5626 	vm:'солярки',
5627 	tm:'солярками',
5628 	pm:'солярках',
5629 	rod:1,
5630 	skl:1,
5631 	odu:0,
5632 };
5633 lx['Сочи']={
5634 	ie:'Сочи',
5635 	re:'Сочи',
5636 	de:'Сочи',
5637 	ve:'Сочи',
5638 	te:'Сочи',
5639 	pe:'Сочи',
5640 	im:'Сочи',
5641 	rm:'Сочи',
5642 	dm:'Сочи',
5643 	vm:'Сочи',
5644 	tm:'Сочи',
5645 	pm:'Сочи',
5646 	rod:1,
5647 	skl:0,
5648 	odu:0,
5649 };
5650 lx['среда']={
5651 	ie:'среда',
5652 	re:'среды',
5653 	de:'среде',
5654 	ve:'среду',
5655 	te:'средой',
5656 	pe:'среде',
5657 	im:'среды',
5658 	rm:'сред',
5659 	dm:'средам',
5660 	vm:'среды',
5661 	tm:'средами',
5662 	pm:'средах',
5663 	rod:1,
5664 	skl:1,
5665 	odu:0,
5666 };
5667 lx['сторона']={
5668 	ie:'сторона',
5669 	re:'стороны',
5670 	de:'стороне',
5671 	ve:'сторону',
5672 	te:'стороной',
5673 	pe:'стороне',
5674 	im:'стороны',
5675 	rm:'сторон',
5676 	dm:'сторонам',
5677 	vm:'стороны',
5678 	tm:'сторонами',
5679 	pm:'сторонах',
5680 	rod:1,
5681 	skl:1,
5682 	odu:0,
5683 };
5684 lx['студентка']={
5685 	ie:'студентка',
5686 	re:'студентки',
5687 	de:'студентке',
5688 	ve:'студентку',
5689 	te:'студенткой',
5690 	pe:'студентке',
5691 	im:'студентки',
5692 	rm:'студенток',
5693 	dm:'студенткам',
5694 	vm:'студенток',
5695 	tm:'студентками',
5696 	pm:'студентках',
5697 	rod:1,
5698 	skl:1,
5699 	odu:0,
5700 };
5701 lx['суббота']={
5702 	ie:'суббота',
5703 	re:'субботы',
5704 	de:'субботе',
5705 	ve:'субботу',
5706 	te:'субботой',
5707 	pe:'субботе',
5708 	im:'субботы',
5709 	rm:'суббот',
5710 	dm:'субботам',
5711 	vm:'субботы',
5712 	tm:'субботами',
5713 	pm:'субботах',
5714 	rod:1,
5715 	skl:1,
5716 	odu:0,
5717 };
5718 lx['сувенир']={
5719 	ie:'сувенир',
5720 	re:'сувенира',
5721 	de:'сувениру',
5722 	ve:'сувенир',
5723 	te:'сувениром',
5724 	pe:'сувенире',
5725 	im:'сувениры',
5726 	rm:'сувениров',
5727 	dm:'сувенирам',
5728 	vm:'сувениры',
5729 	tm:'сувенирами',
5730 	pm:'сувенирах',
5731 	rod:0,
5732 	skl:2,
5733 	odu:0,
5734 };
5735 lx['сырок']={
5736 	ie:'сырок',
5737 	re:'сырка',
5738 	de:'сырку',
5739 	ve:'сырок',
5740 	te:'сырком',
5741 	pe:'сырке',
5742 	im:'сырки',
5743 	rm:'сырков',
5744 	dm:'сыркам',
5745 	vm:'сырки',
5746 	tm:'сырками',
5747 	pm:'сырках',
5748 	rod:0,
5749 	skl:2,
5750 	odu:0,
5751 };
5752 lx['теплоход']={
5753 	ie:'теплоход',
5754 	re:'теплохода',
5755 	de:'теплоходу',
5756 	ve:'теплоход',
5757 	te:'теплоходом',
5758 	pe:'теплоходе',
5759 	im:'теплоходы',
5760 	rm:'теплоходов',
5761 	dm:'теплоходам',
5762 	vm:'теплоходы',
5763 	tm:'теплоходами',
5764 	pm:'теплоходах',
5765 	rod:0,
5766 	skl:2,
5767 	odu:0,
5768 };
5769 lx['террариум']={
5770 	ie:'террариум',
5771 	re:'террариума',
5772 	de:'террариуму',
5773 	ve:'террариум',
5774 	te:'террариумом',
5775 	pe:'террариуме',
5776 	im:'террариумы',
5777 	rm:'террариумов',
5778 	dm:'террариумам',
5779 	vm:'террариумы',
5780 	tm:'террариумами',
5781 	pm:'террариумах',
5782 	rod:0,
5783 	skl:2,
5784 	odu:0,
5785 };
5786 lx['тетрадь']={
5787 	ie:'тетрадь',
5788 	re:'тетради',
5789 	de:'тетради',
5790 	ve:'тетрадь',
5791 	te:'тетрадью',
5792 	pe:'тетради',
5793 	im:'тетради',
5794 	rm:'тетрадей',
5795 	dm:'тетрадям',
5796 	vm:'тетради',
5797 	tm:'тетрадями',
5798 	pm:'тетрадях',
5799 	rod:1,
5800 	skl:3,
5801 	odu:0,
5802 };
5803 lx['тонна']={
5804 	ie:'тонна',
5805 	re:'тонны',
5806 	de:'тонне',
5807 	ve:'тонну',
5808 	te:'тонной',
5809 	pe:'тонне',
5810 	im:'тонны',
5811 	rm:'тонн',
5812 	dm:'тоннам',
5813 	vm:'тонны',
5814 	tm:'тоннами',
5815 	pm:'тоннах',
5816 	rod:1,
5817 	skl:1,
5818 	odu:0,
5819 }; 
5820 lx['топливо']={
5821 	ie:'топливо',
5822 	re:'топлива',
5823 	de:'топливу',
5824 	ve:'топливо',
5825 	te:'топливом',
5826 	pe:'топливе',
5827 	im:'топливо',
5828 	rm:'топлива',
5829 	dm:'топливу',
5830 	vm:'топливо',
5831 	tm:'топливом',
5832 	pm:'топливе',
5833 	rod:2,
5834 	skl:2,
5835 	odu:0,
5836 }; 
5837 lx['точка']={
5838 	ie:'точка',
5839 	re:'точки',
5840 	de:'точке',
5841 	ve:'точку',
5842 	te:'точкой',
5843 	pe:'точке',
5844 	im:'точки',
5845 	rm:'точек',
5846 	dm:'точкам',
5847 	vm:'точки',
5848 	tm:'точками',
5849 	pm:'точках',
5850 	rod:1,
5851 	skl:1,
5852 	odu:0,
5853 };
5854 lx['трапеция']={
5855 	ie:'трапеция',
5856 	re:'трапеции',
5857 	de:'трапеции',
5858 	ve:'трапецию',
5859 	te:'трапецией',
5860 	pe:'трапеции',
5861 	im:'трапеции',
5862 	rm:'трапеций',
5863 	dm:'трапециям',
5864 	vm:'трапеции',
5865 	tm:'трапециями',
5866 	pm:'трапециях',
5867 	rod:1,
5868 	skl:1,
5869 	odu:0,
5870 };
5871 lx['учебник']={
5872 	ie:'учебник',
5873 	re:'учебника',
5874 	de:'учебнику',
5875 	ve:'учебник',
5876 	te:'учебником',
5877 	pe:'учебнике',
5878 	im:'учебники',
5879 	rm:'учебников',
5880 	dm:'учебникам',
5881 	vm:'учебники',
5882 	tm:'учебниками',
5883 	pm:'учебниках',
5884 	rod:0,
5885 	skl:2,
5886 	odu:0,
5887 };
5888 lx['февраль']={
5889 	ie:'февраль',
5890 	re:'февраля',
5891 	de:'февралю',
5892 	ve:'февраль',
5893 	te:'февралём',
5894 	pe:'феврале',
5895 	im:'феврали',
5896 	rm:'февралей',
5897 	dm:'февралям',
5898 	vm:'феврали',
5899 	tm:'февралями',
5900 	pm:'февралях',
5901 	rod:0,
5902 	skl:2,
5903 	odu:0,
5904 };
5905 lx['Фёдоровна']={
5906 	ie:'Фёдоровна',
5907 	re:'Фёдоровны',
5908 	de:'Фёдоровне',
5909 	ve:'Фёдоровну',
5910 	te:'Фёдоровной',
5911 	pe:'Фёдоровне',
5912 	im:'Фёдоровны',
5913 	rm:'Фёдоровн',
5914 	dm:'Фёдоровнам',
5915 	vm:'Фёдоровн',
5916 	tm:'Фёдоровнами',
5917 	pm:'Фёдоровнах',
5918 	rod:1,
5919 	skl:1,
5920 	odu:0,
5921 };
5922 lx['флэшка']={
5923 	ie:'флэшка',
5924 	re:'флэшки',
5925 	de:'флэшке',
5926 	ve:'флэшку',
5927 	te:'флэшкой',
5928 	pe:'флэшке',
5929 	im:'флэшки',
5930 	rm:'флэшек',
5931 	dm:'флэшкам',
5932 	vm:'флэшки',
5933 	tm:'флэшками',
5934 	pm:'флэшках',
5935 	rod:1,
5936 	skl:1,
5937 	odu:0,
5938 };
5939 lx['фонарик']={
5940 	ie:'фонарик',
5941 	re:'фонарика',
5942 	de:'фонарику',
5943 	ve:'фонарик',
5944 	te:'фонариком',
5945 	pe:'фонарике',
5946 	im:'фонарики',
5947 	rm:'фонариков',
5948 	dm:'фонарикам',
5949 	vm:'фонарики',
5950 	tm:'фонариками',
5951 	pm:'фонариках',
5952 	rod:0,
5953 	skl:2,
5954 	odu:0,
5955 };
5956 lx['форма']={
5957 	ie:'форма',
5958 	re:'формы',
5959 	de:'форме',
5960 	ve:'форму',
5961 	te:'формой',
5962 	pe:'форме',
5963 	im:'формы',
5964 	rm:'форм',
5965 	dm:'формам',
5966 	vm:'формы',
5967 	tm:'формами',
5968 	pm:'формах',
5969 	rod:1,
5970 	skl:1,
5971 	odu:0,
5972 	chr:1,
5973 };
5974 lx['фурлонг']={
5975 	ie:'фурлонг',
5976 	re:'фурлонга',
5977 	de:'фурлонгу',
5978 	ve:'фурлонг',
5979 	te:'фурлонгом',
5980 	pe:'фурлонге',
5981 	im:'фурлонги',
5982 	rm:'фурлонгов',
5983 	dm:'фурлонгам',
5984 	vm:'фурлонги',
5985 	tm:'фурлонгами',
5986 	pm:'фурлонгах',
5987 	rod:0,
5988 	skl:2,
5989 	odu:0,
5990 };
5991 lx['Хабаровск']={
5992 	ie:'Хабаровск',
5993 	re:'Хабаровска',
5994 	de:'Хабаровску',
5995 	ve:'Хабаровск',
5996 	te:'Хабаровском',
5997 	pe:'Хабаровске',
5998 	im:'Хабаровски',
5999 	rm:'Хабаровсков',
6000 	dm:'Хабаровскам',
6001 	vm:'Хабаровски',
6002 	tm:'Хабаровсками',
6003 	pm:'Хабаровсках',
6004 	rod:0,
6005 	skl:2,
6006 	odu:0,
6007 	sbs:1,
6008 	chr:1,
6009 };
6010 lx['хутор']={
6011 	ie:'хутор',
6012 	re:'хутора',
6013 	de:'хутору',
6014 	ve:'хутор',
6015 	te:'хутором',
6016 	pe:'хуторе',
6017 	im:'хутора',
6018 	rm:'хуторов',
6019 	dm:'хуторам',
6020 	vm:'хутора',
6021 	tm:'хуторами',
6022 	pm:'хуторах',
6023 	rod:0,
6024 	skl:2,
6025 	odu:0,
6026 };
6027 lx['час']={
6028 	ie:'час',
6029 	re:'часа',
6030 	de:'часу',
6031 	ve:'час',
6032 	te:'часом',
6033 	pe:'часе',
6034 	im:'часы',
6035 	rm:'часов',
6036 	dm:'часам',
6037 	vm:'часы',
6038 	tm:'часами',
6039 	pm:'часах',
6040 	rod:0,
6041 	skl:2,
6042 	odu:0,
6043 };
6044 lx['четверг']={
6045 	ie:'четверг',
6046 	re:'четверга',
6047 	de:'четвергу',
6048 	ve:'четверг',
6049 	te:'четвергом',
6050 	pe:'четверге',
6051 	im:'четверги',
6052 	rm:'четвергов',
6053 	dm:'четвергам',
6054 	vm:'четверги',
6055 	tm:'четвергами',
6056 	pm:'четвергах',
6057 	rod:0,
6058 	skl:2,
6059 	odu:0,
6060 };
6061 lx['четырёхугольник']={
6062 	ie:'четырёхугольник',
6063 	re:'четырёхугольника',
6064 	de:'четырёхугольнику',
6065 	ve:'четырёхугольник',
6066 	te:'четырёхугольником',
6067 	pe:'четырёхугольнике',
6068 	im:'четырёхугольники',
6069 	rm:'четырёхугольников',
6070 	dm:'четырёхугольникам',
6071 	vm:'четырёхугольники',
6072 	tm:'четырёхугольниками',
6073 	pm:'четырёхугольниках',
6074 	rod:0,
6075 	skl:2,
6076 	odu:0,
6077 };
6078 lx['Чехия']={
6079 	ie:'Чехия',
6080 	re:'Чехии',
6081 	de:'Чехии',
6082 	ve:'Чехию',
6083 	te:'Чехией',
6084 	pe:'Чехии',
6085 	im:'Чехии',
6086 	rm:'Чехий',
6087 	dm:'Чехиям',
6088 	vm:'Чехии',
6089 	tm:'Чехиями',
6090 	pm:'Чехиях',
6091 	rod:1,
6092 	skl:1,
6093 	odu:0,
6094 };
6095 lx['число']={
6096 	ie:'число',
6097 	re:'числа',
6098 	de:'числу',
6099 	ve:'число',
6100 	te:'числом',
6101 	pe:'числе',
6102 	im:'числа',
6103 	rm:'чисел',
6104 	dm:'числам',
6105 	vm:'числа',
6106 	tm:'числами',
6107 	pm:'числах',
6108 	rod:2,
6109 	skl:2,
6110 	odu:0,
6111 	chr:1,
6112 };
6113 lx['шахматы']={
6114 	ie:'шахматы',
6115 	re:'шахмат',
6116 	de:'шахматам',
6117 	ve:'шахматы',
6118 	te:'шахматами',
6119 	pe:'шахматах',
6120 	im:'шахматы',
6121 	rm:'шахмат',
6122 	dm:'шахматам',
6123 	vm:'шахматы',
6124 	tm:'шахматами',
6125 	pm:'шахматах',
6126 	rod:0,
6127 	skl:2,
6128 	odu:0,
6129 };
6130 lx['шашки']={
6131 	ie:'шашки',
6132 	re:'шашек',
6133 	de:'шашкам',
6134 	ve:'шашки',
6135 	te:'шашками',
6136 	pe:'шашках',
6137 	im:'шашки',
6138 	rm:'шашек',
6139 	dm:'шашкам',
6140 	vm:'шашки',
6141 	tm:'шашками',
6142 	pm:'шашках',
6143 	rod:3,
6144 	skl:1,
6145 	odu:0,
6146 };
6147 lx['школьница']={
6148 	ie:'школьница',
6149 	re:'школьницы',
6150 	de:'школьнице',
6151 	ve:'школьницу',
6152 	te:'школьницей',
6153 	pe:'школьнице',
6154 	im:'школьницы',
6155 	rm:'школьниц',
6156 	dm:'школьницам',
6157 	vm:'школьницы',
6158 	tm:'школьницами',
6159 	pm:'школьницах',
6160 	rod:1,
6161 	skl:1,
6162 	odu:0,
6163 };
6164 lx['шлак']={
6165 	ie:'шлак',
6166 	re:'шлака',
6167 	de:'шлаку',
6168 	ve:'шлак',
6169 	te:'шлаком',
6170 	pe:'шлаке',
6171 	im:'шлаки',
6172 	rm:'шлаков',
6173 	dm:'шлакам',
6174 	vm:'шлаки',
6175 	tm:'шлаками',
6176 	pm:'шлаках',
6177 	rod:0,
6178 	skl:2,
6179 	odu:0,
6180 };
6181 lx['шоколадка']={
6182 	ie:'шоколадка',
6183 	re:'шоколадки',
6184 	de:'шоколадке',
6185 	ve:'шоколадку',
6186 	te:'шоколадкой',
6187 	pe:'шоколадке',
6188 	im:'шоколадки',
6189 	rm:'шоколадок',
6190 	dm:'шоколадкам',
6191 	vm:'шоколадки',
6192 	tm:'шоколадками',
6193 	pm:'шоколадках',
6194 	rod:1,
6195 	skl:1,
6196 	odu:0,
6197 };
6198 lx['щебень']={
6199 	ie:'щебень',
6200 	re:'щебня',
6201 	de:'щебню',
6202 	ve:'щебень',
6203 	te:'щебнем',
6204 	pe:'щебне',
6205 	im:'щебни',
6206 	rm:'щебней',
6207 	dm:'щебням',
6208 	vm:'щебни',
6209 	tm:'щебнями',
6210 	pm:'щебнях',
6211 	rod:0,
6212 	skl:2,
6213 	odu:0,
6214 };
6215 lx['Эквадор']={
6216 	ie:'Эквадор',
6217 	re:'Эквадора',
6218 	de:'Эквадору',
6219 	ve:'Эквадор',
6220 	te:'Эквадором',
6221 	pe:'Эквадоре',
6222 	im:'Эквадоры',
6223 	rm:'Эквадоров',
6224 	dm:'Эквадорам',
6225 	vm:'Эквадоры',
6226 	tm:'Эквадорами',
6227 	pm:'Эквадорах',
6228 	rod:0,
6229 	skl:2,
6230 	odu:0,
6231 };
6232 lx['электричка']={
6233 	ie:'электричка',
6234 	re:'электрички',
6235 	de:'электричке',
6236 	ve:'электричку',
6237 	te:'электричкой',
6238 	pe:'электричке',
6239 	im:'электрички',
6240 	rm:'электричк',
6241 	dm:'электричкам',
6242 	vm:'электрички',
6243 	tm:'электричками',
6244 	pm:'электричках',
6245 	rod:1,
6246 	skl:1,
6247 	odu:0,
6248 }; 
6249 lx['Элеонора']={
6250 	ie:'Элеонора',
6251 	re:'Элеоноры',
6252 	de:'Элеоноре',
6253 	ve:'Элеонору',
6254 	te:'Элеонорой',
6255 	pe:'Элеоноре',
6256 	im:'Элеоноры',
6257 	rm:'Элеонор',
6258 	dm:'Элеонорам',
6259 	vm:'Элеонор',
6260 	tm:'Элеонорами',
6261 	pm:'Элеонорах',
6262 	rod:1,
6263 	skl:1,
6264 	odu:0,
6265 };
6266 lx['этаж']={
6267 	ie:'этаж',
6268 	re:'этажа',
6269 	de:'этажу',
6270 	ve:'этаж',
6271 	te:'этажом',
6272 	pe:'этаже',
6273 	im:'этажи',
6274 	rm:'этажей',
6275 	dm:'этажам',
6276 	vm:'этажи',
6277 	tm:'этажами',
6278 	pm:'этажах',
6279 	rod:0,
6280 	skl:2,
6281 	odu:0,
6282 };
6283 lx['Юлия']={
6284 	ie:'Юлия',
6285 	re:'Юлии',
6286 	de:'Юлии',
6287 	ve:'Юлию',
6288 	te:'Юлией',
6289 	pe:'Юлии',
6290 	im:'Юлии',
6291 	rm:'Юлий',
6292 	dm:'Юлиям',
6293 	vm:'Юлий',
6294 	tm:'Юлиями',
6295 	pm:'Юлиях',
6296 	rod:1,
6297 	skl:1,
6298 	odu:0,
6299 };
6300 lx['яблоко']={
6301 	ie:'яблоко',
6302 	re:'яблока',
6303 	de:'яблоку',
6304 	ve:'яблоко',
6305 	te:'яблоком',
6306 	pe:'яблоке',
6307 	im:'яблоки',
6308 	rm:'яблок',
6309 	dm:'яблокам',
6310 	vm:'яблоки',
6311 	tm:'яблоками',
6312 	pm:'яблоках',
6313 	rod:2,
6314 	skl:2,
6315 	odu:0,
6316 };
6317 lx['Яна']={
6318 	ie:'Яна',
6319 	re:'Яны',
6320 	de:'Яне',
6321 	ve:'Яну',
6322 	te:'Яной',
6323 	pe:'Яне',
6324 	im:'Яны',
6325 	rm:'Ян',
6326 	dm:'Янам',
6327 	vm:'Ян',
6328 	tm:'Янами',
6329 	pm:'Янах',
6330 	rod:1,
6331 	skl:1,
6332 	odu:0,
6333 };
6334 lx['январь']={
6335 	ie:'январь',
6336 	re:'января',
6337 	de:'январю',
6338 	ve:'январь',
6339 	te:'январём',
6340 	pe:'январе',
6341 	im:'январи',
6342 	rm:'январей',
6343 	dm:'январям',
6344 	vm:'январи',
6345 	tm:'январями',
6346 	pm:'январях',
6347 	rod:0,
6348 	skl:2,
6349 	odu:0,
6350 };
6351 
6352 //}}Существительные
6353 
6354 ////////////////////////////////////////////////////////////////////////
6355 
6356 lx['выраженный']={};
6357 lx['выраженный'].i=['выраженный','выраженная','выраженное','выраженные'];
6358 lx['выраженный'].r=['выраженного','выраженной','выраженного','выраженных'];
6359 lx['выраженный'].d=['выраженному','выраженной','выраженному','выраженным'];
6360 lx['выраженный'].v=['выраженный','выраженную','выраженное','выраженные'];
6361 lx['выраженный'].t=['выраженным','выраженной','выраженным','выраженными'];
6362 lx['выраженный'].p=['выраженном','выраженной','выраженном','выраженных'];
6363 
6364 ///////////////////////////////////////////////////////////////////////
6365 //Здесь - только список наречий
6366 //sl - само слово. Оно же неизменяемое
6367 //sr - сравнительная степень
6368 //pr - превосходная степень
6369 //chr - часть речи.
6370 //0 - наречие
6371 //1 - существительное
6372 //2 - числительное
6373 //3 - прилагательное
6374 //4 - местоимение
6375 'use strict';
6376 
6377 lx['абсолютно']={
6378 	sl:'абсолютно',
6379 	chr:0,
6380 }
6381 lx['временно']={
6382 	sl:'временно',
6383 	chr:0,
6384 }
6385 ////////////////////////////////////////////////////////////////////////
6386 //
6387 //	ie: именительный	падеж единственного	числа
6388 //	re: родительный		падеж единственного	числа
6389 //	de: дательный		падеж единственного	числа
6390 //	ve: винительный		падеж единственного	числа
6391 //	te: творительный	падеж единственного	числа
6392 //	pe: предложный		падеж единственного	числа
6393 //	ie: именительный	падеж множественного	числа
6394 //	re: родительный		падеж множественного	числа
6395 //	de: дательный		падеж множественного	числа
6396 //	ve: винительный		падеж множественного	числа
6397 //	te: творительный	падеж множественного	числа
6398 //	pe: предложный		падеж множественного	числа
6399 //
6400 //	rod: род:
6401 //		0: мужской
6402 //		1: женский
6403 //		2: средний
6404 //		3: только множественное число
6405 //
6406 //	odu: одушевлённость:
6407 //		0: неодушевлённое
6408 //		1: одушевлённое
6409 //
6410 //	skl: склонение:
6411 //		0: несклоняемое
6412 //		1: первое
6413 //		2: второе
6414 //		3: третье
6415 //		4: разносклоняемые существительные
6416 ////////////////////////////////////////////////////////////////////////
6417 'use strict';
6418 if(lx==undefined)
6419 	var lx=[];	//Объявляем глобальный объект lx
6420 ////////////////////////////////////////////////////////////////////////
6421 
6422 //{{Словосочетания с главным словом - существительным
6423 lx['американская миля']={
6424 	ie:'американская миля',
6425 	re:'американской мили',
6426 	de:'американской миле',
6427 	ve:'американскую милю',
6428 	te:'американской милей',
6429 	pe:'американской миле',
6430 	im:'американские мили',
6431 	rm:'американских миль',
6432 	dm:'американским милям',
6433 	vm:'американские мили',
6434 	tm:'американскими милями',
6435 	pm:'американских милях',
6436 	rod:1,
6437 	odu:0,
6438 };
6439 lx['бутылка газировки']={
6440 	ie:'бутылка газировки',
6441 	re:'бутылки газировки',
6442 	de:'бутылке газировки',
6443 	ve:'бутылку газировки',
6444 	te:'бутылкой газировки',
6445 	pe:'бутылке газировки',
6446 	im:'бутылки газировки',
6447 	rm:'бутылок газировки',
6448 	dm:'бутылкам газировки',
6449 	vm:'бутылки газировки',
6450 	tm:'бутылками газировки',
6451 	pm:'бутылках газировки',
6452 	rod:0,
6453 	odu:0,
6454 };
6455 lx['буханка хлеба']={
6456 	ie:'буханка хлеба',
6457 	re:'буханки хлеба',
6458 	de:'буханке хлеба',
6459 	ve:'буханку хлеба',
6460 	te:'буханкой хлеба',
6461 	pe:'буханке хлеба',
6462 	im:'буханки хлеба',
6463 	rm:'буханок хлеба',
6464 	dm:'буханкам хлеба',
6465 	vm:'буханки хлеба',
6466 	tm:'буханками хлеба',
6467 	pm:'буханках хлеба',
6468 	rod:1,
6469 	odu:0,
6470 };
6471 lx['вольная борьба']={
6472 	ie:'вольная борьба',
6473 	re:'вольной борьбы',
6474 	de:'вольной борьбе',
6475 	ve:'вольную борьбу',
6476 	te:'вольной борьбой',
6477 	pe:'вольной борьбе',
6478 	im:'вольные борьбы',
6479 	rm:'вольных борьб',
6480 	dm:'вольным борьбам',
6481 	vm:'вольные борьбы',
6482 	tm:'вольными борьбами',
6483 	pm:'вольных борьбах',
6484 	rod:1,
6485 	odu:0,
6486 };
6487 lx['доисторический омнибус']={
6488 	ie:'доисторический омнибус',
6489 	re:'доисторического омнибуса',
6490 	de:'доисторическому омнибусу',
6491 	ve:'доисторический омнибус',
6492 	te:'доисторическим омнибусом',
6493 	pe:'доисторическом омнибусе',
6494 	im:'доисторические омнибусы',
6495 	rm:'доисторических омнибусов',
6496 	dm:'доисторическим омнибусам',
6497 	vm:'доисторические омнибусы',
6498 	tm:'доисторическими омнибусами',
6499 	pm:'доисторических омнибусах',
6500 	rod:0,
6501 	odu:0,
6502 };
6503 lx['книжная полка']={
6504 	ie:'книжная полка',
6505 	re:'книжной полки',
6506 	de:'книжной полке',
6507 	ve:'книжную полку',
6508 	te:'книжной полкой',
6509 	pe:'книжной полке',
6510 	im:'книжные полки',
6511 	rm:'книжных полок',
6512 	dm:'книжным полкам',
6513 	vm:'книжные полки',
6514 	tm:'книжными полками',
6515 	pm:'книжных полках',
6516 	rod:1,
6517 	odu:0,
6518 };
6519 lx['комсомолка, спортсменка, отличница и, наконец, просто красавица']={
6520 	ie:'комсомолка, спортсменка, отличница и, наконец, просто красавица',
6521 	re:'комсомолки, спортсменки, отличницы и, наконец, просто красавицы',
6522 	de:'комсомолке, спортсменке, отличнице и, наконец, просто красавице',
6523 	ve:'комсомолку, спортсменку, отличницу и, наконец, просто красавицу',
6524 	te:'комсомолкой, спортсменкой, отличницей и, наконец, просто красавицей',
6525 	pe:'комсомолке, спортсменке, отличнице и, наконец, просто красавице',
6526 	im:'комсомолки, спортсменки, отличницы и, наконец, просто красавицы',
6527 	rm:'комсомолок, спортсменок, отличниц и, наконец, просто красавиц',
6528 	dm:'комсомолкам, спортсменкам, отличницам и, наконец, просто красавицам',
6529 	vm:'комсомолок, спортсменок, отличниц и, наконец, просто красавиц',
6530 	tm:'комсомолками, спортсменками, отличницами и, наконец, просто красавицами',
6531 	pm:'комсомолках, спортсменках, отличницах и, наконец, просто красавицах',
6532 	rod:1,
6533 	odu:0,
6534 };
6535 lx['круизный лайнер']={
6536 	ie:'круизный лайнер',
6537 	re:'круизного лайнера',
6538 	de:'круизному лайнеру',
6539 	ve:'круизный лайнер',
6540 	te:'круизным лайнером',
6541 	pe:'круизном лайнере',
6542 	im:'круизные лайнеры',
6543 	rm:'круизных лайнеров',
6544 	dm:'круизным лайнерам',
6545 	vm:'круизные лайнеры',
6546 	tm:'круизными лайнерами',
6547 	pm:'круизных лайнерах',
6548 	rod:0,
6549 	odu:0,
6550 };
6551 lx['лёгкая атлетика']={
6552 	ie:'лёгкая атлетика',
6553 	re:'лёкой атлетики',
6554 	de:'лёгкой атлетике',
6555 	ve:'лёгкую атлетику',
6556 	te:'лёгкой атлетикой',
6557 	pe:'лёгкой атлетике',
6558 	im:'лёгкие атлетики',
6559 	rm:'лёгких атлетик',
6560 	dm:'лёгким атлетикам',
6561 	vm:'лёгкие атлетики',
6562 	tm:'лёгкими атлетиками',
6563 	pm:'лёгких атлетиках',
6564 	rod:1,
6565 	odu:0,
6566 };
6567 lx['магнит на холодильник']={
6568 	ie:'магнит на холодильник',
6569 	re:'магнита на холодильник',
6570 	de:'магниту на холодильник',
6571 	ve:'магнит на холодильник',
6572 	te:'магнитом на холодильник',
6573 	pe:'магните на холодильник',
6574 	im:'магниты на холодильник',
6575 	rm:'магнитов на холодильник',
6576 	dm:'магнитам на холодильник',
6577 	vm:'магниты на холодильник',
6578 	tm:'магнитами на холодильник',
6579 	pm:'магнитах на холодильник',
6580 	rod:0,
6581 	odu:0,
6582 };
6583 lx['метиловый спирт']={
6584 	ie:'метиловый спирт',
6585 	re:'метилового спирта',
6586 	de:'метиловому спирту',
6587 	ve:'метиловый спирт',
6588 	te:'метиловым спиртом',
6589 	pe:'метиловом спирте',
6590 	im:'метиловые спирты',
6591 	rm:'метиловых спиртов',
6592 	dm:'метиловым спиртам',
6593 	vm:'метиловые спирты',
6594 	tm:'метиловыми спиртами',
6595 	pm:'метиловых спиртах',
6596 	rod:0,
6597 	odu:0,
6598 };
6599 lx['морская миля']={
6600 	ie:'морская миля',
6601 	re:'морской мили',
6602 	de:'морской миле',
6603 	ve:'морскую милю',
6604 	te:'морской милей',
6605 	pe:'морской миле',
6606 	im:'морские мили',
6607 	rm:'морских миль',
6608 	dm:'морским милям',
6609 	vm:'морские мили',
6610 	tm:'морскими милями',
6611 	pm:'морских милях',
6612 	rod:1,
6613 	odu:0,
6614 };
6615 lx['наименьшее значение']={
6616 	ie:'наименьшее значение',
6617 	re:'наименьшего значения',
6618 	de:'наименьшему значению',
6619 	ve:'наименьшее значение',
6620 	te:'наименьшим значением',
6621 	pe:'наименьшем значении',
6622 	im:'наименьшие значения',
6623 	rm:'наименьших значений',
6624 	dm:'наименьшим значениям',
6625 	vm:'наименьшие значения',
6626 	tm:'наименьшими значениями',
6627 	pm:'наименьших значениях',
6628 	rod:2,
6629 	odu:0,
6630 };
6631 lx['наибольшее значение']={
6632 	ie:'наибольшее значение',
6633 	re:'наибольшего значения',
6634 	de:'наибольшему значению',
6635 	ve:'наибольшее значение',
6636 	te:'наибольшим значением',
6637 	pe:'наибольшем значении',
6638 	im:'наибольшие значения',
6639 	rm:'наибольших значений',
6640 	dm:'наибольшим значениям',
6641 	vm:'наибольшие значения',
6642 	tm:'наибольшими значениями',
6643 	pm:'наибольших значениях',
6644 	rod:2,
6645 	odu:0,
6646 };
6647 lx['населённый пункт']={
6648 	ie:'населённый пункт',
6649 	re:'населённого пункта',
6650 	de:'населённому пункту',
6651 	ve:'населённый пункт',
6652 	te:'населённым пунктом',
6653 	pe:'населённом пункте',
6654 	im:'населённые пункты',
6655 	rm:'населённых пунктов',
6656 	dm:'населённым пунктам',
6657 	vm:'населённые пункты',
6658 	tm:'населёнными пунктами',
6659 	pm:'населённых пунктах',
6660 	r2:'населённых пункта',
6661 	rod:0,
6662 	odu:0,
6663 };
6664 lx['настольный теннис']={
6665 	ie:'настольный теннис',
6666 	re:'настольного тенниса',
6667 	de:'настольному теннису',
6668 	ve:'настольный теннис',
6669 	te:'настольным теннисом',
6670 	pe:'настольном теннисе',
6671 	im:'настольные теннисы',
6672 	rm:'настольных теннисов',
6673 	dm:'настольным теннисам',
6674 	vm:'настольные теннисы',
6675 	tm:'настольными теннисами',
6676 	pm:'настольных теннисах',
6677 	rod:0,
6678 	odu:0,
6679 };
6680 lx['оконная рама']={
6681 	ie:'оконная рама',
6682 	re:'оконной рамы',
6683 	de:'оконной раме',
6684 	ve:'оконную раму',
6685 	te:'оконной рамой',
6686 	pe:'оконной раме',
6687 	im:'оконные рамы',
6688 	rm:'оконных рам',
6689 	dm:'оконным рамам',
6690 	vm:'оконные рамы',
6691 	tm:'оконными рамами',
6692 	pm:'оконных рамах',
6693 	rod:1,
6694 	odu:0,
6695 };
6696 lx['открытый луч']={
6697 	ie:'открытый луч',
6698 	re:'открытого луча',
6699 	de:'открытому лучу',
6700 	ve:'открытый луч',
6701 	te:'открытым лучом',
6702 	pe:'открытом луче',
6703 	im:'открытые лучы',
6704 	rm:'открытых лучей',
6705 	dm:'открытым лучам',
6706 	vm:'открытые лучи',
6707 	tm:'открытыми лучами',
6708 	pm:'открытых лучах',
6709 	rod:0,
6710 	odu:0,
6711 };
6712 lx['прогулочное судно']={
6713 	ie:'прогулочное судно',
6714 	re:'прогулочного судна',
6715 	de:'прогулочному судну',
6716 	ve:'прогулочное судно',
6717 	te:'прогулочным судном',
6718 	pe:'прогулочном судне',
6719 	im:'прогулочные суда',
6720 	rm:'прогулочных судов',
6721 	dm:'прогулочным судам',
6722 	vm:'прогулочные суда',
6723 	tm:'прогулочными судами',
6724 	pm:'прогулочных судах',
6725 	rod:2,
6726 	odu:0,
6727 };
6728 lx['русская миля']={
6729 	ie:'русская миля',
6730 	re:'русской мили',
6731 	de:'русской миле',
6732 	ve:'русскую милю',
6733 	te:'русской милей',
6734 	pe:'русской миле',
6735 	im:'русские мили',
6736 	rm:'русских миль',
6737 	dm:'русским милям',
6738 	vm:'русские мили',
6739 	tm:'русскими милями',
6740 	pm:'русских милях',
6741 	rod:1,
6742 	odu:0,
6743 };
6744 lx['сборник тестов для подготовки к ЕГЭ']={
6745 	ie:'сборник тестов для подготовки к ЕГЭ',
6746 	re:'сборника тестов для подготовки к ЕГЭ',
6747 	de:'сборнику тестов для подготовки к ЕГЭ',
6748 	ve:'сборник тестов для подготовки к ЕГЭ',
6749 	te:'сборником тестов для подготовки к ЕГЭ',
6750 	pe:'сборнике тестов для подготовки к ЕГЭ',
6751 	im:'сборники тестов для подготовки к ЕГЭ',
6752 	rm:'сборников тестов для подготовки к ЕГЭ',
6753 	dm:'сборникам тестов для подготовки к ЕГЭ',
6754 	vm:'сборники тестов для подготовки к ЕГЭ',
6755 	tm:'сборниками тестов для подготовки к ЕГЭ',
6756 	pm:'сборниках тестов для подготовки к ЕГЭ',
6757 	rod:0,
6758 	odu:0,
6759 };
6760 lx['скромный библиотекарь']={
6761 	ie:'скромный библиотекарь',
6762 	re:'скромного библиотекаря',
6763 	de:'скромному библиотекарю',
6764 	ve:'скромного библиотекаря',
6765 	te:'скромным библиотекарем',
6766 	pe:'скромном библиотекаре',
6767 	im:'скромные библиотекари',
6768 	rm:'скромных библиотекарей',
6769 	dm:'скромным библиотекарям',
6770 	vm:'скромных библиотекарей',
6771 	tm:'скромными библиотекарями',
6772 	pm:'скромных библиотекарях',
6773 	rod:0,
6774 	odu:0,
6775 };
6776 lx['суровая воронежская хакерша']={
6777 	ie:'суровая воронежская хакерша',
6778 	re:'суровой воронежской хакерши',
6779 	de:'суровой воронежской хакерше',
6780 	ve:'суровую воронежскую хакершу',
6781 	te:'суровой воронежской хакершой',
6782 	pe:'суровой воронежской хакерше',
6783 	im:'суровые воронежские хакерши',
6784 	rm:'суровых воронежских хакерш',
6785 	dm:'суровым воронежским хакершам',
6786 	vm:'суровых воронежских хакерш',
6787 	tm:'суровыми воронежскими хакершами',
6788 	pm:'суровых воронежских хакершах',
6789 	rod:1,
6790 	odu:0,
6791 };
6792 lx['точка минимума']={
6793 	ie:'точка минимума',
6794 	re:'точки минимума',
6795 	de:'точке минимума',
6796 	ve:'точку минимума',
6797 	te:'точкой минимума',
6798 	pe:'точке минимума',
6799 	im:'точки минимума',
6800 	rm:'точек минимума',
6801 	dm:'точкам минимума',
6802 	vm:'точки минимума',
6803 	tm:'точками минимума',
6804 	pm:'точках минимума',
6805 	rod:1,
6806 	odu:0,
6807 };
6808 lx['точка максимума']={
6809 	ie:'точка максимума',
6810 	re:'точки максимума',
6811 	de:'точке максимума',
6812 	ve:'точку максимума',
6813 	te:'точкой максимума',
6814 	pe:'точке максимума',
6815 	im:'точки максимума',
6816 	rm:'точек максимума',
6817 	dm:'точкам максимума',
6818 	vm:'точки максимума',
6819 	tm:'точками максимума',
6820 	pm:'точках максимума',
6821 	rod:1,
6822 	odu:0,
6823 };
6824 lx['тяжелая атлетика']={
6825 	ie:'тяжелая атлетика',
6826 	re:'тяжелой атлетики',
6827 	de:'тяжелой атлетике',
6828 	ve:'тяжелую атлетику',
6829 	te:'тяжелой атлетикой',
6830 	pe:'тяжелой атлетике',
6831 	im:'тяжелые атлетики',
6832 	rm:'тяжелых атлетик',
6833 	dm:'тяжелым атлетикам',
6834 	vm:'тяжелые атлетики',
6835 	tm:'тяжелыми атлетиками',
6836 	pm:'тяжелых атлетиках',
6837 	rod:1,
6838 	odu:0,
6839 };
6840 lx['упаковка сока']={
6841 	ie:'упаковка сока',
6842 	re:'упаковки сока',
6843 	de:'упаковке сока',
6844 	ve:'упаковку сока',
6845 	te:'упаковкой сока',
6846 	pe:'упаковке сока',
6847 	im:'упаковки сока',
6848 	rm:'упаковок сока',
6849 	dm:'упаковкам сока',
6850 	vm:'упаковки сока',
6851 	tm:'упаковками сока',
6852 	pm:'упаковках сока',
6853 	rod:1,
6854 	odu:0,
6855 };
6856 lx['флакон шампуня']={
6857 	ie:'флакон шампуня',
6858 	re:'флакона шампуня',
6859 	de:'флакону шампуня',
6860 	ve:'флакон шампуня',
6861 	te:'флаконом шампуня',
6862 	pe:'флаконе шампуня',
6863 	im:'флаконы шампуня',
6864 	rm:'флаконов шампуня',
6865 	dm:'флаконам шампуня',
6866 	vm:'флаконы шампуня',
6867 	tm:'флаконами шампуня',
6868 	pm:'флаконах шампуня',
6869 	rod:0,
6870 	odu:0,
6871 };
6872 lx['фунт стерлингов']={
6873 	ie:'фунт стерлингов',
6874 	re:'фунта стерлингов',
6875 	de:'фунту стерлингов',
6876 	ve:'фунт стерлингов',
6877 	te:'фунтом стерлингов',
6878 	pe:'фунте стерлингов',
6879 	im:'фунты стерлингов',
6880 	rm:'фунтов стерлингов',
6881 	dm:'фунтам стерлингов',
6882 	vm:'фунты стерлингов',
6883 	tm:'фунтами стерлингов',
6884 	pm:'фунтах стерлингов',
6885 	rod:0,
6886 	skl:2,
6887 	odu:0,
6888 };
6889 lx['цветочный горшок']={
6890 	ie:'цветочный горшок',
6891 	re:'цветочного горшка',
6892 	de:'цветочному горшку',
6893 	ve:'цветочный горшок',
6894 	te:'цветочным горшком',
6895 	pe:'цветочном горшке',
6896 	im:'цветочные горшки',
6897 	rm:'цветочных горшков',
6898 	dm:'цветочным горшкам',
6899 	vm:'цветочные горшки',
6900 	tm:'цветочными горшками',
6901 	pm:'цветочных горшках',
6902 	rod:0,
6903 	skl:2,
6904 	odu:0,
6905 };
6906 //}}Словосочетания с главным словом - существительным
6907 
6908 'use strict';
6909 ////////////////////////////////////////////////////////////////////////
6910 var lxskl=[];	//Объявляем глобальный объект lxskl - типичные окончания
6911 ////////////////////////////////////////////////////////////////////////
6912 var lxpad={ie:1,re:1,de:1,ve:1,te:1,pe:1,im:1,rm:1,dm:1,vm:1,tm:1,pm:1,};
6913 
6914 //Пустой шаблон
6915 
6916 lxskl['']={
6917 	ie:'',
6918 	re:'',
6919 	de:'',
6920 	ve:'',
6921 	te:'',
6922 	pe:'',
6923 	im:'',
6924 	rm:'',
6925 	dm:'',
6926 	vm:'',
6927 	tm:'',
6928 	pm:'',
6929 	rod:0,
6930 	skl:2,
6931 	odu:0,
6932 };
6933 //Первое склонение. Род считаем женским, если что, ставим вручную.
6934 {
6935 lxskl['я']={
6936 	ie:'я',
6937 	re:'и',
6938 	de:'е',
6939 	ve:'ю',
6940 	te:'ей',
6941 	pe:'е',
6942 	im:'и',
6943 	rm:'',
6944 	dm:'ям',
6945 	vm:'и',
6946 	tm:'ями',
6947 	pm:'ях',
6948 	rod:1,
6949 	skl:1,
6950 	odu:0,
6951 };
6952 lxskl['а']={
6953 	ie:'а',
6954 	re:'ы',
6955 	de:'е',
6956 	ve:'у',
6957 	te:'ой',
6958 	pe:'е',
6959 	im:'ы',
6960 	rm:'',
6961 	dm:'ам',
6962 	vm:'ы',
6963 	tm:'ами',
6964 	pm:'ах',
6965 	rod:1,
6966 	skl:1,
6967 	odu:0,
6968 };
6969 ['ж','ш','ч','щ','к','х','г'].map(function(a){
6970 	lxskl[a+'а']={
6971 		ie:a+'а',
6972 		re:a+'и',
6973 		de:a+'е',
6974 		ve:a+'у',
6975 		te:a+'ой',
6976 		pe:a+'е',
6977 		im:a+'и',
6978 		rm:a+'',
6979 		dm:a+'ам',
6980 		vm:a+'и',
6981 		tm:a+'ами',
6982 		pm:a+'ах',
6983 		rod:1,
6984 		skl:1,
6985 		odu:0,
6986 	}; 
6987 });
6988 ['ж','ш','ч'].map(function(a){
6989 	lxskl[a+'ка']={
6990 		ie:a+'ка',
6991 		re:a+'ки',
6992 		de:a+'ке',
6993 		ve:a+'ку',
6994 		te:a+'кой',
6995 		pe:a+'ке',
6996 		im:a+'ки',
6997 		rm:a+'ек',
6998 		dm:a+'кам',
6999 		vm:a+'ки',
7000 		tm:a+'ками',
7001 		pm:a+'ках',
7002 		rod:1,
7003 		skl:1,
7004 		odu:0,
7005 	}; 	
7006 });
7007 ['б','в','д','з','л','м','н','п','р','с','т'].map(function(a){
7008 	lxskl[a+'ка']={
7009 		ie:a+'ка',
7010 		re:a+'ки',
7011 		de:a+'ке',
7012 		ve:a+'ку',
7013 		te:a+'кой',
7014 		pe:a+'ке',
7015 		im:a+'ки',
7016 		rm:a+'ок',
7017 		dm:a+'кам',
7018 		vm:a+'ки',
7019 		tm:a+'ками',
7020 		pm:a+'ках',
7021 		rod:1,
7022 		skl:1,
7023 		odu:0,
7024 	}; 	
7025 });
7026 lxskl['ия']={
7027 	ie:'ия',
7028 	re:'ии',
7029 	de:'ии',
7030 	ve:'ию',
7031 	te:'ией',
7032 	pe:'ии',
7033 	im:'ии',
7034 	rm:'ий',
7035 	dm:'иям',
7036 	vm:'ии',
7037 	tm:'иями',
7038 	pm:'иях',
7039 	rod:1,
7040 	skl:1,
7041 	odu:0,
7042 };
7043 }
7044 //Второе склонение, средний род
7045 lxskl['ие']={
7046 	ie:'ие',
7047 	re:'ия',
7048 	de:'ию',
7049 	ve:'ие',
7050 	te:'ием',
7051 	pe:'ии',
7052 	im:'ия',
7053 	rm:'ий',
7054 	dm:'иям',
7055 	vm:'ия',
7056 	tm:'иями',
7057 	pm:'иях',
7058 	rod:2,
7059 	skl:2,
7060 	odu:0,
7061 };
7062 ['ё','е'].map(function(a){
7063 	lxskl[a]={
7064 		ie:a,
7065 		re:'я',
7066 		de:'ю',
7067 		ve:a,
7068 		te:'ем',
7069 		pe:'е',
7070 		im:'я',
7071 		rm:'ей',
7072 		dm:'ям',
7073 		vm:'я',
7074 		tm:'ями',
7075 		pm:'ях',
7076 		rod:2,
7077 		skl:2,
7078 		odu:0,
7079 	};
7080 });
7081 
7082 lxskl['о']={
7083 	ie:'о',
7084 	re:'а',
7085 	de:'у',
7086 	ve:'о',
7087 	te:'ом',
7088 	pe:'е',
7089 	im:'а',
7090 	rm:'',
7091 	dm:'ам',
7092 	vm:'а',
7093 	tm:'ами',
7094 	pm:'ах',
7095 	rod:2,
7096 	skl:2,
7097 	odu:0,
7098 };
7099 //Второе склонение, мужской род
7100 lxskl['ий']={
7101 	ie:'ий',
7102 	re:'ия',
7103 	de:'ию',
7104 	ve:'ий',
7105 	te:'ием',
7106 	pe:'ии',
7107 	im:'ии',
7108 	rm:'иев',
7109 	dm:'иям',
7110 	vm:'ии',
7111 	tm:'иями',
7112 	pm:'иях',
7113 	rod:0,
7114 	skl:2,
7115 	odu:0,
7116 };
7117 lxskl['ь']={
7118 	ie:'ь',
7119 	re:'я',
7120 	de:'ю',
7121 	ve:'ь',
7122 	te:'ем',
7123 	pe:'е',
7124 	im:'и',
7125 	rm:'ей',
7126 	dm:'ям',
7127 	vm:'и',
7128 	tm:'ями',
7129 	pm:'ях',
7130 	rod:0,
7131 	skl:2,
7132 	odu:0,
7133 }; 
7134 lxskl['й']={
7135 	ie:'й',
7136 	re:'я',
7137 	de:'ю',
7138 	ve:'й',
7139 	te:'ем',
7140 	pe:'е',
7141 	im:'и',
7142 	rm:'ев',
7143 	dm:'ям',
7144 	vm:'и',
7145 	tm:'ями',
7146 	pm:'ях',
7147 	rod:0,
7148 	skl:2,
7149 	odu:0,
7150 };
7151 ['б','в','д','з','л','м','н','п','р','с','т','ф','ц'].map(function(a){
7152 	lxskl[a]={
7153 		ie:a,
7154 		re:a+'а',
7155 		de:a+'у',
7156 		ve:a,
7157 		te:a+'ом',
7158 		pe:a+'е',
7159 		im:a+'ы',
7160 		rm:a+'ов',
7161 		dm:a+'ам',
7162 		vm:a+'ы',
7163 		tm:a+'ами',
7164 		pm:a+'ах',
7165 		rod:0,
7166 		skl:2,
7167 		odu:0,
7168 	}; 	
7169 });
7170 ['ж','ш','ч','щ','к','х','г'].map(function(a){
7171 	lxskl[a]={
7172 		ie:a,
7173 		re:a+'а',
7174 		de:a+'у',
7175 		ve:a,
7176 		te:a+'ом',
7177 		pe:a+'е',
7178 		im:a+'и',
7179 		rm:a+'ей',
7180 		dm:a+'ам',
7181 		vm:a+'и',
7182 		tm:a+'ами',
7183 		pm:a+'ах',
7184 		rod:0,
7185 		skl:2,
7186 		odu:0,
7187 	}; 
7188 });
7189 lxskl['к'].rm='ков';
7190 lxskl['г'].rm='гов';
7191 lxskl['х'].rm='хов';
7192 
7193 ['ё','е','о'].map(function(a){
7194 	lxskl[a+'к']={
7195 		ie:a+'к',
7196 		re:'ка',
7197 		de:'ку',
7198 		ve:a+'к',
7199 		te:'ком',
7200 		pe:'ке',
7201 		im:'ки',
7202 		rm:'ков',
7203 		dm:'кам',
7204 		vm:'ки',
7205 		tm:'ками',
7206 		pm:'ках',
7207 		rod:0,
7208 		skl:2,
7209 		odu:0,
7210 	};
7211 });
7212 //Костыли
7213 lxskl['0']={
7214 	ie:'',
7215 	re:'',
7216 	de:'',
7217 	ve:'',
7218 	te:'',
7219 	pe:'',
7220 	im:'',
7221 	rm:'',
7222 	dm:'',
7223 	vm:'',
7224 	tm:'',
7225 	pm:'',
7226 	rod:0,
7227 	skl:0,
7228 	odu:0,
7229 };
7230 lxskl['мя']={
7231 	ie:'мя',
7232 	re:'мени',
7233 	de:'мени',
7234 	ve:'мя',
7235 	te:'менем',
7236 	pe:'мени',
7237 	im:'мена',
7238 	rm:'мён',
7239 	dm:'менам',
7240 	vm:'мена',
7241 	tm:'менами',
7242 	pm:'менах',
7243 	rod:0,
7244 	skl:4,
7245 	odu:0,
7246 };
7247 //И отдельный набор костылей для третьего склонения
7248 lxskl['ь3']={
7249 	ie:'ь',
7250 	re:'и',
7251 	de:'и',
7252 	ve:'ь',
7253 	te:'ью',
7254 	pe:'и',
7255 	im:'и',
7256 	rm:'ей',
7257 	dm:'ям',
7258 	vm:'и',
7259 	tm:'ями',
7260 	pm:'ях',
7261 	rod:1,
7262 	skl:3,
7263 	odu:0,
7264 };
7265 ['ж','ш','ч','щ'].map(function(a){
7266 	lxskl[a+'ь']={
7267 		ie:a+'ь',
7268 		re:a+'и',
7269 		de:a+'и',
7270 		ve:a+'ь',
7271 		te:a+'ью',
7272 		pe:a+'и',
7273 		im:a+'и',
7274 		rm:a+'ей',
7275 		dm:a+'ям',
7276 		vm:a+'и',
7277 		tm:a+'ями',
7278 		pm:a+'ях',
7279 		rod:1,
7280 		skl:3,
7281 		odu:0,
7282 	};
7283 });
7284 //Несклоняемые
7285 ['у','ю','э'].map(function(a){
7286 	lxskl[a]={
7287 		ie:a,
7288 		re:a,
7289 		de:a,
7290 		ve:a,
7291 		te:a,
7292 		pe:a,
7293 		im:a,
7294 		rm:a,
7295 		dm:a,
7296 		vm:a,
7297 		tm:a,
7298 		pm:a,
7299 		rod:1,
7300 		skl:1,
7301 		odu:0,
7302 	}; 	
7303 });
7304 
7305 //Субстантивированные - по мере необходмости
7306 lxskl['ый']={
7307 	ie:'ый',
7308 	re:'ого',
7309 	de:'ому',
7310 	ve:'ого',
7311 	te:'ым',
7312 	pe:'ом',
7313 	im:'ые',
7314 	rm:'ых',
7315 	dm:'ым',
7316 	vm:'ых',
7317 	tm:'ыми',
7318 	pm:'ых',
7319 	rod:0,
7320 	skl:5,
7321 	odu:1,
7322 };
7323 lxskl['ыйся']={
7324 	ie:'ыйся',
7325 	re:'огося',
7326 	de:'омуся',
7327 	ve:'огося',
7328 	te:'ымся',
7329 	pe:'омся',
7330 	im:'ыеся',
7331 	rm:'ыхся',
7332 	dm:'ымся',
7333 	vm:'ыхся',
7334 	tm:'ымися',
7335 	pm:'ыхся',
7336 	rod:0,
7337 	skl:5,
7338 	odu:1,
7339 };
7340 lxskl['ийся']={
7341 	ie:'ийся',
7342 	re:'егося',
7343 	de:'емуся',
7344 	ve:'егося',
7345 	te:'имся',
7346 	pe:'емся',
7347 	im:'иеся',
7348 	rm:'ихся',
7349 	dm:'имся',
7350 	vm:'ихся',
7351 	tm:'имися',
7352 	pm:'ихся',
7353 	rod:0,
7354 	skl:5,
7355 	odu:1,
7356 };
7357 'use strict';
7358 
7359 function autosklon(slovo,p1){
7360 	if(slovo.isArray){
7361 		for(var lensl=slovo.length-1;lensl>=0;lensl--)
7362 			autosklon(slovo[lensl],p1);
7363 		return;
7364 	}
7365 	if(lx[slovo])
7366 		return console.log('Такое слово уже есть в словаре.');
7367 	var rez=setlx(slovo);
7368 	if(p1!=undefined)
7369 		slovo+=p1;
7370 	var sl=slovo;
7371 	for(;sl.length && !lx[sl] && !lxskl[sl]; sl=sl.udalPerv()){};
7372 	var lxparent=lx[sl]?lx[sl]:lxskl[sl];
7373 	var osnova=slovo.udalPosl(sl.length);
7374 	for(var padezh in lxpad)
7375 		rez+=logparam(padezh,osnova+lxparent[padezh]);
7376 	rez+=logparam('rod',lxparent.rod);
7377 	rez+=logparam('skl',lxparent.skl);
7378 	rez+=logparam('odu',lxparent.odu);
7379 	rez+='};\n'
7380 	console.log(rez);//Это НЕ ОТЛАДКА!!!
7381 }
7382 
7383 var lxkand=[];
7384 
7385 function sklonlxkand(slovo,p1,al){
7386 	if(slovo.ie)
7387 		return sklonlxkand(slovo.ie,p1,al);
7388 	if(lx[slovo]){
7389 		if(al)
7390 			alert('Такое слово уже есть в словаре.');
7391 		return lx[slovo];
7392 	}
7393 	lxkand[slovo]={};
7394 	if(p1!=undefined)
7395 		slovo+=p1;
7396 	var sl=slovo;
7397 	for(;sl.length && !lx[sl] && !lxskl[sl]; sl=sl.udalPerv()){};
7398 	var lxparent=lx[sl]?lx[sl]:lxskl[sl];
7399 	var osnova=slovo.udalPosl(sl.length);
7400 	lxkand[slovo]=lxparent.clone();
7401 	for(var padezh in lxpad)
7402 		lxkand[slovo][padezh]=osnova+lxparent[padezh];
7403 	lxkand[slovo].chr=1;
7404 	return lxkand[slovo];
7405 }
7406 
7407 var lxdop={
7408 	rod:1,
7409 	skl:1,
7410 	odu:1,
7411 	sbs:1,
7412 	sl:1,
7413 	sr:1,
7414 	pr:1,
7415 	chr:1,
7416 };
7417 
7418 function strlxkand(slovo,p1,al){
7419 	var rez=setlx(slovo);
7420 	var sl;
7421 	if(!lxkand[slovo])
7422 		sl=sklonlxkand(slovo,p1,al).clone();
7423 	else
7424 		sl=lxkand[slovo].clone();
7425 	for(var pad in lxpad){
7426 		rez+=logparam(pad,sl[pad]);
7427 		sl[pad]=undefined;
7428 	}
7429 	for(var pad in lxdop){
7430 		rez+=logparam(pad,sl[pad]);
7431 		sl[pad]=undefined;
7432 	}
7433 	for(var pad in sl)
7434 		rez+=logparam(pad,sl[pad]);
7435 	rez+='};\n';
7436 	return rez;
7437 }
7438 
7439 function loglxkand(slovo,p1){
7440 	console.log(strlxkand(slovo,p1,1));
7441 }
7442 
7443 function setlx(p1){
7444 	return('\nlx[\''+p1+'\']={\n');
7445 }
7446 
7447 function logparam(p1,p2){
7448 	return p2!=undefined? 
7449 		p2.isString?
7450 			('\t'+p1+':\''+p2+'\',\n'):
7451 			('\t'+p1+':'+p2+',\n')
7452 		:'';
7453 }
7454 
7455 function logsklon(a){
7456 	if(slovo.isArray){
7457 		for(var lensl=slovo.length-1;lensl>=0;lensl--)
7458 			logsklon(slovo[lensl],p1);
7459 		return;
7460 	}
7461 	console.log(sklon(a))
7462 }
7463 
7464 function sklon(a){
7465 	setlx(a);
7466 	var osn;//"Основа" слова. Выбирается так, чтобы было удобно.
7467 	var rez='';//То, что отправим в результат. Например, в консоль.
7468 	rez+=setlx(a);
7469 	if(a.posl()=='а'){
7470 		osn=a.udalPosl();
7471 		rez+=logparam('ie',a);
7472 		rez+=logparam('re',osn+'ы');
7473 		rez+=logparam('de',osn+'е');
7474 		rez+=logparam('ve',osn+'у');
7475 		rez+=logparam('te',osn+'ой');
7476 		rez+=logparam('pe',osn+'е');
7477 		rez+=logparam('im',osn+'ы');
7478 		rez+=logparam('rm',osn);
7479 		rez+=logparam('dm',osn+'ам');
7480 		rez+=logparam('vm',osn+'ы');
7481 		rez+=logparam('tm',osn+'ами');
7482 		rez+=logparam('pm',osn+'ах');
7483 		rez+=logparam('rod',1);
7484 		rez+=logparam('skl',1);
7485 		rez+=logparam('odu',0);
7486 	}else
7487 	if(a.posl()=='ь'){
7488 		osn=a.udalPosl();
7489 		rez+=logparam('ie',a);
7490 		rez+=logparam('re',osn+'я');
7491 		rez+=logparam('de',osn+'ю');
7492 		rez+=logparam('ve',a);
7493 		rez+=logparam('te',osn+'ем');
7494 		rez+=logparam('pe',osn+'е');
7495 		rez+=logparam('im',osn+'и');
7496 		rez+=logparam('rm',osn+'ей');
7497 		rez+=logparam('dm',osn+'ям');
7498 		rez+=logparam('vm',osn+'и');
7499 		rez+=logparam('tm',osn+'ями');
7500 		rez+=logparam('pm',osn+'ях');
7501 		rez+=logparam('rod',0);
7502 		rez+=logparam('skl',2);
7503 		rez+=logparam('odu',0);
7504 	}else
7505 	{
7506 		osn=a;
7507 		rez+=logparam('ie',a);
7508 		rez+=logparam('re',osn+'а');
7509 		rez+=logparam('de',osn+'у');
7510 		rez+=logparam('ve',a);
7511 		rez+=logparam('te',osn+'ом');
7512 		rez+=logparam('pe',osn+'е');
7513 		rez+=logparam('im',osn+'ы');
7514 		rez+=logparam('rm',osn+'ов');
7515 		rez+=logparam('dm',osn+'ам');
7516 		rez+=logparam('vm',osn+'ы');
7517 		rez+=logparam('tm',osn+'ами');
7518 		rez+=logparam('pm',osn+'ах');
7519 		rez+=logparam('rod',0);
7520 		rez+=logparam('skl',2);
7521 		rez+=logparam('odu',0);
7522 	}
7523 	rez+='};\n'
7524 	return rez;
7525 }
7526 'use strict';
7527 lx['один']={
7528 	chr:2,
7529 	i:'один',
7530 	r:'одного',
7531 	d:'одному',
7532 	v:'один',
7533 	t:'одним',
7534 	p:'одном',
7535 };
7536 lx['одна']={
7537 	chr:2,
7538 	i:'одна',
7539 	r:'одной',
7540 	d:'одной',
7541 	v:'одну',
7542 	t:'одной',
7543 	p:'одной',
7544 };
7545 lx['одно']={
7546 	chr:2,
7547 	i:'одно',
7548 	r:'одного',
7549 	d:'одному',
7550 	v:'одно',
7551 	t:'одним',
7552 	p:'одном',
7553 };
7554 lx['одни']={
7555 	chr:2,
7556 	i:'одни',
7557 	r:'одних',
7558 	d:'одним',
7559 	v:'одни',
7560 	t:'одними',
7561 	p:'одних',
7562 };
7563 lx['две']={
7564 	chr:2,
7565 	i:'две',
7566 	r:'двух',
7567 	d:'двум',
7568 	v:'две',
7569 	t:'двумя',
7570 	p:'двух',
7571 };
7572 lx['два']={
7573 	chr:2,
7574 	i:'два',
7575 	r:'двух',
7576 	d:'двум',
7577 	v:'два',
7578 	t:'двумя',
7579 	p:'двух',
7580 };
7581 lx['три']={
7582 	chr:2,
7583 	i:'три',
7584 	r:'трёх',
7585 	d:'трём',
7586 	v:'три',
7587 	t:'тремя',
7588 	p:'трех',
7589 };
7590 lx['четыре']={
7591 	chr:2,
7592 	i:'четыре',
7593 	r:'четырёх',
7594 	d:'четырём',
7595 	v:'четыре',
7596 	t:'четырьмя',
7597 	p:'четырёх',
7598 };
7599 lx['пять']={
7600 	chr:2,
7601 	i:'пять',
7602 	r:'пяти',
7603 	d:'пяти',
7604 	v:'пять',
7605 	t:'пятью',
7606 	p:'пяти',
7607 };
7608 lx['шесть']={
7609 	chr:2,
7610 	i:'шесть',
7611 	r:'шести',
7612 	d:'шести',
7613 	v:'шесть',
7614 	t:'шестью',
7615 	p:'шести',
7616 };
7617 lx['семь']={
7618 	chr:2,
7619 	i:'семь',
7620 	r:'семи',
7621 	d:'семи',
7622 	v:'семь',
7623 	t:'семью',
7624 	p:'семи',
7625 };
7626 lx['восемь']={
7627 	chr:2,
7628 	i:'восемь',
7629 	r:'восьми',
7630 	d:'восьми',
7631 	v:'восемь',
7632 	t:'восемью',
7633 	p:'восьми',
7634 };
7635 lx['девять']={
7636 	chr:2,
7637 	i:'девять',
7638 	r:'девяти',
7639 	d:'девяти',
7640 	v:'девять',
7641 	t:'девятью',
7642 	p:'девяти',
7643 };
7644 lx['десять']={
7645 	chr:2,
7646 	i:'десять',
7647 	r:'десяти',
7648 	d:'десяти',
7649 	v:'десять',
7650 	t:'десятью',
7651 	p:'десяти',
7652 };
7653 lx['одиннадцать']={
7654 	chr:2,
7655 	i:'одиннадцать',
7656 	r:'одиннадцати',
7657 	d:'одиннадцати',
7658 	v:'одиннадцать',
7659 	t:'одиннадцатью',
7660 	p:'одиннадцати',
7661 };
7662 lx['двенадцать']={
7663 	chr:2,
7664 	i:'двенадцать',
7665 	r:'двенадцати',
7666 	d:'двенадцати',
7667 	v:'двенадцать',
7668 	t:'двенадцатью',
7669 	p:'двенадцати',
7670 };
7671 lx['тринадцать']={
7672 	chr:2,
7673 	i:'тринадцать',
7674 	r:'тринадцати',
7675 	d:'тринадцати',
7676 	v:'тринадцать',
7677 	t:'тринадцатью',
7678 	p:'тринадцати',
7679 };
7680 lx['четырнадцать']={
7681 	chr:2,
7682 	i:'четырнадцать',
7683 	r:'четырнадцати',
7684 	d:'четырнадцати',
7685 	v:'четырнадцать',
7686 	t:'четырнадцатью',
7687 	p:'четырнадцати',
7688 };
7689 lx['пятнадцать']={
7690 	chr:2,
7691 	i:'пятнадцать',
7692 	r:'пятнадцати',
7693 	d:'пятнадцати',
7694 	v:'пятнадцать',
7695 	t:'пятнадцатью',
7696 	p:'пятнадцати',
7697 };
7698 lx['шестнадцать']={
7699 	chr:2,
7700 	i:'шестнадцать',
7701 	r:'шестнадцати',
7702 	d:'шестнадцати',
7703 	v:'шестнадцать',
7704 	t:'шестнадцатью',
7705 	p:'шестнадцати',
7706 };
7707 lx['семнадцать']={
7708 	chr:2,
7709 	i:'семнадцать',
7710 	r:'семнадцати',
7711 	d:'семнадцати',
7712 	v:'семнадцать',
7713 	t:'семнадцатью',
7714 	p:'семнадцати',
7715 };
7716 lx['восемнадцать']={
7717 	chr:2,
7718 	i:'восемнадцать',
7719 	r:'восемнадцати',
7720 	d:'восемнадцати',
7721 	v:'восемнадцать',
7722 	t:'восемнадцатью',
7723 	p:'восемнадцати',
7724 };
7725 lx['девятнадцать']={
7726 	chr:2,
7727 	i:'девятнадцать',
7728 	r:'девятнадцати',
7729 	d:'девятнадцати',
7730 	v:'девятнадцать',
7731 	t:'девятнадцатью',
7732 	p:'девятнадцати',
7733 };
7734 lx['двадцать']={
7735 	chr:2,
7736 	i:'двадцать',
7737 	r:'двадцати',
7738 	d:'двадцати',
7739 	v:'двадцать',
7740 	t:'двадцатью',
7741 	p:'двадцати',
7742 };
7743 lx['тридцать']={
7744 	chr:2,
7745 	i:'тридцать',
7746 	r:'тридцати',
7747 	d:'тридцати',
7748 	v:'тридцать',
7749 	t:'тридцатью',
7750 	p:'тридцати',
7751 };
7752 lx['сорок']={
7753 	chr:2,
7754 	i:'сорок',
7755 	r:'сорока',
7756 	d:'сорока',
7757 	v:'сорок',
7758 	t:'сорока',
7759 	p:'сорока',
7760 };
7761 lx['пятьдесят']={
7762 	chr:2,
7763 	i:'пятьдесят',
7764 	r:'пятидесяти',
7765 	d:'пятидесяти',
7766 	v:'пятьдесят',
7767 	t:'пятьюдесятью',
7768 	p:'пятидесяти',
7769 };
7770 lx['шестьдесят']={
7771 	chr:2,
7772 	i:'шестьдесят',
7773 	r:'шестидесяти',
7774 	d:'шестидесяти',
7775 	v:'шестьдесят',
7776 	t:'шестьюдесятью',
7777 	p:'шестидесяти',
7778 };
7779 lx['семьдесят']={
7780 	chr:2,
7781 	i:'семьдесят',
7782 	r:'семидесяти',
7783 	d:'семидесяти',
7784 	v:'семьдесят',
7785 	t:'семьюдесятью',
7786 	p:'семидесяти',
7787 };
7788 lx['восемьдесят']={
7789 	chr:2,
7790 	i:'восемьдесят',
7791 	r:'восьмидесяти',
7792 	d:'восьмидесяти',
7793 	v:'восемьдесят',
7794 	t:'восемьюдесятью',
7795 	p:'восьмидесяти',
7796 };
7797 lx['девяносто']={
7798 	chr:2,
7799 	i:'девяносто',
7800 	r:'девяноста',
7801 	d:'девяноста',
7802 	v:'девяносто',
7803 	t:'девяноста',
7804 	p:'девяноста',
7805 };
7806 lx['сто']={
7807 	chr:2,
7808 	i:'сто',
7809 	r:'ста',
7810 	d:'ста',
7811 	v:'сто',
7812 	t:'ста',
7813 	p:'ста',
7814 };
7815 lx['двести']={
7816 	chr:2,
7817 	i:'двести',
7818 	r:'двухсот',
7819 	d:'двумстам',
7820 	v:'двести',
7821 	t:'двумястами',
7822 	p:'двухстах',
7823 };
7824 lx['триста']={
7825 	chr:2,
7826 	i:'триста',
7827 	r:'трёхсот',
7828 	d:'трёмстам',
7829 	v:'триста',
7830 	t:'тремястами',
7831 	p:'трёхстах',
7832 };
7833 lx['четыреста']={
7834 	chr:2,
7835 	i:'четыреста',
7836 	r:'четырёхсот',
7837 	d:'четырёмстам',
7838 	v:'четыреста',
7839 	t:'четырьмястами',
7840 	p:'четырёхстах',
7841 };
7842 lx['пятьсот']={
7843 	chr:2,
7844 	i:'пятьсот',
7845 	r:'пятисот',
7846 	d:'пятистам',
7847 	v:'пятьсот',
7848 	t:'пятьюстами',
7849 	p:'пятистах',
7850 };
7851 lx['шестьсот']={
7852 	chr:2,
7853 	i:'шестьсот',
7854 	r:'шестисот',
7855 	d:'шестистам',
7856 	v:'шестьсот',
7857 	t:'шестьюстами',
7858 	p:'шестистах',
7859 };
7860 lx['семьсот']={
7861 	chr:2,
7862 	i:'семьсот',
7863 	r:'семисот',
7864 	d:'семистам',
7865 	v:'семисот',
7866 	t:'семьюстами',
7867 	p:'семистах',
7868 };
7869 lx['восемьсот']={
7870 	chr:2,
7871 	i:'восемьсот',
7872 	r:'восьмисот',
7873 	d:'восьмистам',
7874 	v:'восемьсот',
7875 	t:'восемьюстами',
7876 	p:'восьмистах',
7877 };
7878 lx['девятьсот']={
7879 	chr:2,
7880 	i:'девятьсот',
7881 	r:'девятисот',
7882 	d:'девятистам',
7883 	v:'девятьсот',
7884 	t:'девятьюстами',
7885 	p:'девятистах',
7886 };
7887 lx['тысяча']={
7888 	chr:2,
7889 	i:'тысяча',
7890 	r:'тысячи',
7891 	d:'тысяче',
7892 	v:'тысячу',
7893 	t:'тысячей',
7894 	p:'тысяче',
7895 };
7896 lx['тысячи']={
7897 	chr:2,
7898 	i:'тысячи',
7899 	r:'тысяч',
7900 	d:'тысячам',
7901 	v:'тысячи',
7902 	t:'тысячами',
7903 	p:'тысячах',
7904 };
7905 lx['миллион']={
7906 	chr:2,
7907 	i:'миллион',
7908 	r:'миллиона',
7909 	d:'миллиону',
7910 	v:'миллион',
7911 	t:'миллионом',
7912 	p:'миллионе',
7913 };
7914 lx['миллионы']={
7915 	chr:2,
7916 	i:'миллионы',
7917 	r:'миллионов',
7918 	d:'миллионам',
7919 	v:'миллионы',
7920 	t:'миллионами',
7921 	p:'миллионах',
7922 };
7923 lx['миллиард']={
7924 	chr:2,
7925 	i:'миллиард',
7926 	r:'миллиарда',
7927 	d:'миллиарду',
7928 	v:'миллиард',
7929 	t:'миллиардом',
7930 	p:'миллиарде',
7931 };
7932 lx['миллиарды']={
7933 	chr:2,
7934 	i:'миллиарды',
7935 	r:'миллиардов',
7936 	d:'миллиардам',
7937 	v:'миллиарды',
7938 	t:'миллиардами',
7939 	p:'миллиардах',
7940 };
7941 lx['двое']={
7942 	chr:2,
7943 	i:'двое',
7944 	r:'двоих',
7945 	d:'двоим',
7946 	v:'двое',
7947 	t:'двоими',
7948 	p:'двоих',
7949 };
7950 lx['трое']={
7951 	chr:2,
7952 	i:'трое',
7953 	r:'троих',
7954 	d:'троим',
7955 	v:'трое',
7956 	t:'троими',
7957 	p:'троих',
7958 };
7959 lx['четверо']={
7960 	chr:2,
7961 	i:'четверо',
7962 	r:'четверых',
7963 	d:'четверым',
7964 	v:'четверо',
7965 	t:'четверыми',
7966 	p:'четверых',
7967 };
7968 lx['пятеро']={
7969 	chr:2,
7970 	i:'пятеро',
7971 	r:'пятерых',
7972 	d:'пятерым',
7973 	v:'пятеро',
7974 	t:'пятерыми',
7975 	p:'пятерых',
7976 }; 
7977 lx['шестеро']={
7978 	chr:2,
7979 	i:'шестеро',
7980 	r:'шестерых',
7981 	d:'шестерым',
7982 	v:'шестеро',
7983 	t:'шестерыми',
7984 	p:'шестерых',
7985 };
7986 lx['семеро']={
7987 	chr:2,
7988 	i:'семеро',
7989 	r:'семерых',
7990 	d:'семерым',
7991 	v:'семеро',
7992 	t:'семерыми',
7993 	p:'семерых',
7994 };
7995 lx['восьмеро']={
7996 	chr:2,
7997 	i:'восьмеро',
7998 	r:'восьмерых',
7999 	d:'восьмерым',
8000 	v:'восьмеро',
8001 	t:'восьмерыми',
8002 	p:'восьмерых',
8003 };
8004 lx['девятеро']={
8005 	chr:2,
8006 	i:'девятеро',
8007 	r:'девятерых',
8008 	d:'девятерым',
8009 	v:'девятеро',
8010 	t:'девятерыми',
8011 	p:'девятерых',
8012 };
8013 lx['десятеро']={
8014 	chr:2,
8015 	i:'десятеро',
8016 	r:'десятерых',
8017 	d:'десятерым',
8018 	v:'десятеро',
8019 	t:'десятерыми',
8020 	p:'десятерых',
8021 };
8022 //http://pastebin.com/Dpv8pQWW - Любовь Ерышова
8023 //http://pastebin.com/jJ8CWxd0 - Екатерина Трегубова
8024 //+Николай Авдеев
8025 'use strict';
8026 
8027 function Complex(re,im){
8028 	this.re=+re?+re:0;
8029 	this.im=+im?+im:0;
8030 	this.isComplex=1;
8031 	this.toString=function(){
8032 	/**Представляет число в виде a+bi*/
8033 		var rez;
8034 		if(!this.re && !this.im)
8035 			rez='0';
8036 		else if( this.re && !this.im)
8037 			rez=''+this.re;
8038 		else if(!this.re &&  this.im)
8039 			rez=''+this.im+'i';
8040 		else if( this.re &&  this.im)
8041 			rez= ''+this.re+'+'+this.im+'i';
8042 		return rez.plusminus();
8043 	}
8044 	this.ts=function(){
8045 		return this.toString().ts();
8046 	}
8047 
8048 	this.minus=function(){
8049 	/**Противоположное число: -a-bi*/
8050 		return new Complex( -(this.re), - (this.im));
8051 	}
8052 
8053 	this.sopr=function(){
8054 	/**Сопряжёное число: a-bi*/
8055 		return new Complex(this.re, - (this.im));
8056 	}
8057 
8058 	this.abs=
8059 	this.norma=function(){
8060 	/**Норма (модуль, абсолютное значение) комплексного числа*/
8061 		return (this.re.sqr()+this.im.sqr()).sqrt();
8062 	}
8063 
8064 	this.obrat=function(){
8065 	/**Обратное число: a-bi*/
8066 		var n=this.norma().sqr();
8067 		return new Complex(this.re/n, - (this.im)/n);
8068 	}
8069 	
8070 	this.sum=function(){
8071 	/**Прибавить к комплексному числу комплексные или действительные*/
8072 		var rez=this.clone();
8073 //		arguments[0].isComplex?arguments[0].clone():new Complex(arguments[0]);
8074 		for(var i=arguments.length-1;i>=0;i--){
8075 			var operand=arguments[i];
8076 			if(operand.isNumber){
8077 				rez.re+=operand;
8078 			}else{
8079 				if(operand.re){
8080 					rez.re+=operand.re;
8081 				}
8082 				if(operand.im){
8083 					rez.im+=operand.im;
8084 				}
8085 			}
8086 		}
8087 		return rez;
8088 	}
8089 
8090 	this.umn=function(){
8091 	/**Умножить комплексное число на комплексные или действительные*/
8092 		var rez=this.clone();
8093 		for(var i=arguments.length-1;i>=0;i--){
8094 			var operand=arguments[i];
8095 			if(operand.isNumber){
8096 				if(operand===0){
8097 					return new Complex();
8098 				}
8099 				rez.re*=operand;
8100 				rez.im*=operand;
8101 			}else{
8102 				if(!operand.re && !operand.im){
8103 					//Нуль
8104 					return new Complex();
8105 				}else{
8106 					var r=rez.re,
8107 						m=rez.im;
8108 					rez.re=r*operand.re-m*operand.im;
8109 					rez.im=r*operand.im+m*operand.re;
8110 				} 
8111 			}
8112 		}
8113 		return rez;
8114 	}
8115 }
8116 //Синонимы функций: сокращение, транслит, антитранслит и тому подобное
8117 
8118 //Для func.js
8119 var sl=sluchch;
8120 
8121 //Для прототипных
8122 String.prototype.ts=String.prototype.toStandart;
8123