diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..bd53818 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.pythonPath": "/Library/Frameworks/Python.framework/Versions/3.6/bin/python3" +} \ No newline at end of file diff --git a/01.md b/01.md deleted file mode 100644 index 8952e2c..0000000 --- a/01.md +++ /dev/null @@ -1,142 +0,0 @@ -> The fear of the LORD is the beginning of knowledge; fools despise wisdom and instruction.(PROVERBS 1:7) - ->敬畏耶和华是只是的开端,愚妄人藐视智慧和训诲。 - -#关于python的故事 - -我已经在[《零基础学python(第一版)》](https://github.com/qiwsir/ITArticles/blob/master/BasicPython/index.md)中写了一个专门讲述python故事的——[唠叨一些关于python的事情](https://github.com/qiwsir/ITArticles/blob/master/BasicPython/001.md)——章节,今天再写类似的标题,不打算完全重复原来的,只是把部分认为重要的或者不可或缺的东西复制过来。 - -##越来越火的Python - -在前几年(before 2011),我跟一些朋友介绍python的时候,看到的常常是一种很诧异的眼神,通常会听到: - - “那时什么东西?” - “解释性语言会不会很慢?” - “没听说谁用呀?” - “能像php,java,c#那样用来做网站吗?” - “什么?你说的是pascal?你还在用这个老古董?” - “哦,我听说过,有一些老外在用,不过我们这还没有人用呢。” - -时过境迁,现在已经有了很大变化。 - -2014年初,我开始写《零基础学python》系列,就得到了很多朋友的支持,而且吸引了不少学习python的朋友,特别是在我的那个QQ群里面,集中了不少学习者和爱好者,当然也有高手深藏不露。 - - 获得我发布的有关python信息途径: - 1. 加入QQ群,里面可以跟很多人交流。QQ群:Code Craft:26913719 - 2. 关注我的新浪微博,名称是:老齐Py。地址:[http://weibo.com/qiwsir](http://weibo.com/qiwsir) - 3. 到github.com上直接follow我,名称是:qiwsir。地址:[https://github.com/qiwsir](https://github.com/qiwsir) - 4. 经常关注我的网站:[www.itdiffer.com](http://www.itdiffer.com) - -特别是今年(2015年)一开始,在QQ群(26913719)里面,就有朋友说,他在上海找工作,看到好多公司都要有python开发经验的。也有朋友委托我推荐python程序员的。 - -从我自己的经历中也感受到,不仅仅是国外,国内也如此,用python的领域越来越多,找pythoner的公司和机构也越来越多了。 - -所以,学习python,挺好(包括女生,也是“挺”好)。 - -##需要什么基础吗 - -这是很多初学者都会问的一个问题。诚然,在计算机方面的基础越好,对学习任何一门新的编程语言,都是更有利的。如果,你在编程语言的学习上,属于零基础,也不用担心,不管用哪门语言作为学习编程的入门语言,总要有一个开始吧。 - -就我个人来看,python是比较适合作为学习编程的入门语言的。换言之,就是不用担心自己的所谓基础问题。 - -看我这个课程的标题,就是强调“零基础”的。 - -不仅我这么认为,美国有不少高校也这么认为,纷纷用python作为编程专业甚至是非编程专业的大学生入门语言。 - -我跟很多计算机专业的大学生朋友聊过,他们比较痛苦的就是大学用C语言作为编程入门语言,学了这个,才知道自己不适合学习编程,因为直到课程完毕,甚至考试通过了(一般是师生一块糊里糊涂地通过),对编程这件事也还是雾里看花的那种感觉。当然,或许你不在此列,一来你有天分,二来你下了功夫。 - -总而言之,学习python,你不用担心基础问题。**特别是在这里学习,我的后续内容,就是从零基础开始的**。 - -##优雅的python - -python号称是优雅的。但是这种说法仁者见仁智者见智。比如经常听到大师们说“数学美”,是不是谁都能体验到呢?不见得吧。 - -所以,是不是优雅,是不是简单,是不是明确,只有“谁用谁知道”。 - -不过,我特别喜欢下面这句话:**人生苦短,我用python**。意思就是说,python能够提高开发效率,让你短暂的人生能够除了工作之外,还有更多的时间休息、娱乐或者别的什么。 - -或许有的人不相信,那么也只有“谁用谁知道了”。 - -##跟别的语言比较 - -“如果你遇到的问题无法用python解决,这个问题也不能用别的语言解决。”——这是我向一些徘徊在python之外的人常说的,是不是有点夸张了呢? - -最近看到了一篇文章,[《如果变成语言是女人》](http://www.vaikan.com/if-programming-languages-are-woman/),我转载如下(考虑到篇幅所限,所了适当删改,非删减请通过连接查看原文): - -![](./0images/01.jpg) - ->PHP是你的豆蔻年华的心上人,她是情窦初开的你今年夏天傻乎乎的追求的目标。玩一玩可以,但千万不要投入过深,因为这个女孩有严重的问题。 - ->Ruby是脚本家族中一个非常漂亮的孩子。第一眼看她,你的心魄就会被她的美丽摄走。她还很有有趣。起初她看起来有点慢,不怎么稳定,但近些年来她已经成熟了很多。 - ->Python 是Ruby的一个更懂事的姐姐。她优雅,新潮,成熟。她也许太过优秀。很多小伙都会说“嘿,兄弟,你怎么可能不爱上Python呢!?”。没错,你喜欢Python。你把她当成了一个脾气和浪漫都退烧了的Ruby。 - ->Java是一个事业成功的女人。很多在她手下干过的人都感觉她的能力跟她的地位并不般配,她更多的是通过技巧打动了中层管理人员。你也许会认为她是很有智慧的人,你愿意跟随她。但你要准备好在数年里不断的听到“你用错了接口,你遗漏了一个分号”这样的责备。 - ->C++ 是Java的表姐。她在很多地方跟Java类似,不同的是她成长于一个天真的年代,不认为需要使用“保护措施”。当然,“保护措施”是指自动内存管理。你以为我指的是什么? - ->C 是C++的妈妈。对一些头发花白的老程序员说起这个名称,会让他们眼睛一亮,产生无限回忆。 - ->Objective C C语言家族的另外一个成员。她加入了一个奇怪的教会,不愿意和任何教会之外的人约会。 - -虽然是娱乐,或许有争议,权当参考吧。 - -##The Zen of Python - -这就是著名的《python之禅》。 - ->Beautiful is better than ugly. - ->Explicit is better than implicit. - ->Simple is better than complex. - ->Complex is better than complicated. - ->Flat is better than nested. - ->Sparse is better than dense. - ->Readability counts. - ->Special cases aren't special enough to break the rules. - ->Although practicality beats purity. - ->Errors should never pass silently. - ->Unless explicitly silenced. - ->In the face of ambiguity, refuse the temptation to guess. - ->There should be one-- and preferably only one --obvious way to do it. - ->Although that way may not be obvious at first unless you're Dutch. - ->Now is better than never. - ->Although never is often better than *right* now. - ->If the implementation is hard to explain, it's a bad idea. - ->If the implementation is easy to explain, it may be a good idea. - ->Namespaces are one honking great idea -- let's do more of those! - -##感谢Guido van Rossum - -Guido van Rossum 是值得所有pythoner感谢和尊重的,因为他发明了这个优雅的编程语言。他发明python的过程是那么让人称赞和惊叹,显示出牛人的风采。 - ->1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他是一个蒙提·派森的飞行马戏团的爱好者。ABC是由吉多参加设计的一种教学语言。就吉多本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,吉多认为是非开放造成的。吉多决心在Python中避免这一错误,并取得了非常好的效果,完美结合了C和其他一些语言。 - -这段故事的英文刊载在:[https://www.python.org/doc/essays/foreword/](https://www.python.org/doc/essays/foreword/) - -##新版的设想 - -我写《零基础学python(第二版)》,是承接第一版的,并在第一版基础上,最出比较大量的改进,比如每个章节的标题,现在改为更为直接的描述,而不是用那种文艺范写了,因为这样不仅更明确,而且还能用于以后备查。 - -此外,我会继续原有的大家认可的风格,兼顾零基础和后续的发展。特别是要在里面穿插如更多的项目例子。 - -------- - -[总目录](./index.md)   |   [下节:从小工到专家](./02.md) diff --git a/02.md b/02.md deleted file mode 100644 index bbbc3a9..0000000 --- a/02.md +++ /dev/null @@ -1,45 +0,0 @@ ->Do not store up for yourselves treasures on earth, where moth and rust consume and where thieves break in and steal; but store up for yourselves treasures in heaven, where neither moth nor rust consumes and where thieves do not break in and steal. For where your treasure is, there your heart will be also.(MATHEW 10:19-21) - ->不要为自己积攒财宝在地上,地上有虫子咬,能锈坏,也有贼挖窟窿来偷;只要积攒财宝在天上,天上没有虫子咬,不能锈坏,也没有贼挖窟窿来偷。因为的财宝在哪里,你的心也在哪里。 - -#从小工到专家 - -这个标题,我借用了一本书的名字——《程序员修炼之道:从小工到专家》——这本书特别推荐阅读。 - -“从小工到专家”,也是很多开始学习编程的朋友的愿望。如何能实现呢?上面所提到的那本书中,给出了非常好的建议,值得借鉴。 - -我在这里倒是想到了另外一个问题,也是学习python的朋友给我提出来的: - ->“书已经看了,书上的代码也运行过了,习题也能解答了,但是还不知如何开发一个真正的应用程序,不知从何处下手。” - -此外,我在工作中,也遇到过一些刚刚毕业来求职的大学生,从简历上看,相关专业的考试分数是不错的(我一般是相信那些成绩是真的),但是,一讨论到专业问题,常常出乎我的预料。特别是当他面对真是的工作对象时,表现出来的比成绩单差太多了。 - -我一般会武断地下一个结论:练的少。 - -从小工到专家,必经之路就是要多阅读代码,多调试程序。 - -##阅读代码 - -有句话说的好:“读书破万卷,下笔如有神”。这也适用于编程。阅读别人的代码,是必须的。通过阅读别人的代码,“站在巨人的肩膀上”,让自己眼界开阔,思维充实。 - -阅读代码的最好地方就是:www.github.com - -如果你还没有帐号,请尽快注册,他将是你作为一个优秀程序员的起点。当然了,不要忘记来follow我,我的帐号是: qiwsir。 - -阅读代码最好的一个方法是一边阅读,一边进行必要的注释,这是在梳理自己对别人代码的认识。然后,可以run一下,看看效果。当然,还可以按照自己的设想进行必要修改,再run。这样你就将别人的代码消化吸收了。 - -##调试程序 - -首先就是要自己动手写程序。“一万小时定律”在编程领域也是成立的,除非你是天才,否则,只有通过“一万小时定律”才能成为天才。 - -“拳不离手,曲不离口”,小工只有通过勤奋地敲代码才能成为专家。 - -另外,在调试程序的时候,要善于应用网络,看看类似的问题别人如何解决,不要仅仅局限于自己的思维范围。利用网络就少不了搜索引擎。我特别向那些要想成为专家的小工们说:只有google能够帮助你成为专家,其它的搜索引擎,特别是某国内常用的,充其量成为“砖家”,更多的是“砖工”。所以,请用:**google.com**。 - -我在本教程中,会陆续想有意成为专家的朋友提供更多有用的网站或者工具。 - -除了以上两条基本方法之外,成为专家之路还要注意很多呢,不过都是旁枝末节的问题了。以上两条做好,至少在编程上不迷茫了。 - ---------- - -[总目录](./index.md)   |   [上节:关于python的故事](./01.md)   |   [下节:安装python的开发环境](./03.md) diff --git a/0images/n00201.png b/0images/n00201.png new file mode 100644 index 0000000..ec5cfb0 Binary files /dev/null and b/0images/n00201.png differ diff --git a/0images/n00401.png b/0images/n00401.png new file mode 100644 index 0000000..82aa1c4 Binary files /dev/null and b/0images/n00401.png differ diff --git a/1code/105-1.py b/1code/105-1.py new file mode 100644 index 0000000..64a4a57 --- /dev/null +++ b/1code/105-1.py @@ -0,0 +1,10 @@ +#! /usr/bin/env python +#coding:utf-8 + +""" +请计算: +19+2*4-8/2 +""" + +a = 19+2*4-8/2 +print a diff --git a/1code/107.py b/1code/107.py new file mode 100644 index 0000000..fd87ba3 --- /dev/null +++ b/1code/107.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +# coding=utf-8 + +name = raw_input("What is your name?") +age = raw_input("How old are you?") + +print "Your name is:", name +print "You are " + age + " years old." + +after_ten = int(age) + 10 +print "You will be " + str(after_ten) + " years old after ten years." diff --git a/1code/110_2.py b/1code/110_2.py new file mode 100644 index 0000000..baa3797 --- /dev/null +++ b/1code/110_2.py @@ -0,0 +1,8 @@ +# -*- coding: cp936 -*- +#python 2 + +import sys + +print sys.getdefaultencoding() + +print "ѧpythonֵö" diff --git a/1code/110_3.py b/1code/110_3.py new file mode 100644 index 0000000..dc9d942 --- /dev/null +++ b/1code/110_3.py @@ -0,0 +1,7 @@ +#python 3 + +import sys + +print(sys.getdefaultencoding()) + +print("《跟老齐学python》值得读") diff --git a/1code/122p3.py b/1code/122p3.py new file mode 100644 index 0000000..9b1bdc2 --- /dev/null +++ b/1code/122p3.py @@ -0,0 +1,19 @@ +#! /usr/bin/env python +#coding:utf-8 + +print("请输入任意一个整数数字:") + +number = int(input()) + +if number == 10: + print("您输入的数字是:{}".format(number)) + print("You are SMART.") +elif number > 10: + print("您输入的数字是:{}".format(number)) + print("This number is more than 10.") +elif number < 10: + print("您输入的数字是:{}".format(number)) + print("This number is less than 10.") +else: + print("Are you a human?") + diff --git a/1code/12501.py b/1code/12501.py new file mode 100644 index 0000000..826ff28 --- /dev/null +++ b/1code/12501.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +# coding=utf-8 + +from math import sqrt + +for n in range(99, 1, -1): + root = sqrt(n) + if root == int(root): + print n + break + +else: + print "Did not find it!" + diff --git a/1code/12502p3.py b/1code/12502p3.py new file mode 100644 index 0000000..abfda92 --- /dev/null +++ b/1code/12502p3.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +#coding:utf-8 + +a = 8 +while a: + if a%2 == 0: + break + else: + print("%d is odd number"%a) + a = 0 + +print("%d is even number"%a) diff --git a/1code/12503p3.py b/1code/12503p3.py new file mode 100644 index 0000000..b50754c --- /dev/null +++ b/1code/12503p3.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +#coding:utf-8 + +a = 9 +while a: + if a%2 == 0: + a -=1 + continue + else: + print("%d is odd number"%a) + a -=1 diff --git a/1code/127.txt b/1code/127.txt new file mode 100644 index 0000000..f8c83ae --- /dev/null +++ b/1code/127.txt @@ -0,0 +1,3 @@ +ʦhello +˫ܰ +ʦ \ No newline at end of file diff --git a/1code/12701.py b/1code/12701.py new file mode 100644 index 0000000..2480fc3 --- /dev/null +++ b/1code/12701.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +# coding=utf-8 + +f = open("you.md") + +while True: + line = f.readline() + if not line: + break + print line , + +f.close() diff --git a/1code/12901.py b/1code/12901.py new file mode 100644 index 0000000..a6a164f --- /dev/null +++ b/1code/12901.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python +# coding=utf-8 + +raw = [1,2,3,4,5,6,7,8,9,0] +print raw +b = raw.pop(0) +raw.append(b) + +print raw diff --git a/1code/12902.py b/1code/12902.py new file mode 100644 index 0000000..73f23ac --- /dev/null +++ b/1code/12902.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +# coding=utf-8 + +from __future__ import division +import random + +score = [random.randint(0,100) for i in range(40)] +print score + +num = len(score) +sum_score = sum(score) +ave_num = sum_score/num +less_ave = len([i for i in score if i=0: ")) + +fact = 1 + +for i in range(2, n + 1): + fact = fact * i + +print str(n) + " factorial is " + str(fact) diff --git a/1code/12905_2.py b/1code/12905_2.py new file mode 100644 index 0000000..a4e43f9 --- /dev/null +++ b/1code/12905_2.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +# coding=utf-8 + +n = int(raw_input('Enter an integer >= 0: ')) + +fact = 1 +i = 2 +while i<=n: + fact = fact * i + i += 1 + +print str(n) + " factorial is " + str(fact) diff --git a/1code/130.txt b/1code/130.txt new file mode 100644 index 0000000..38fb458 --- /dev/null +++ b/1code/130.txt @@ -0,0 +1,3 @@ +learn python +http://qiwsir.github.io +qiwsir@gmail.com diff --git a/1code/aliquot.py b/1code/aliquot.py new file mode 100644 index 0000000..541f677 --- /dev/null +++ b/1code/aliquot.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python +# coding=utf-8 + +aliquot = [] + +for n in range(1, 100): + if n % 3 == 0: + aliquot.append(n) + +print(aliquot) diff --git a/1code/chartoint.py b/1code/chartoint.py new file mode 100644 index 0000000..9cd54c5 --- /dev/null +++ b/1code/chartoint.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +# coding=utf-8 + +def change_char(character, n): + new = [] + for c in character: + i = ord(c) + n + new.append(chr(i)) + return "".join(new) + +if __name__ == "__main__": + one = "abc" + new = change_char(one, 2) + print one + print new + diff --git a/1code/guessnumber.py b/1code/guessnumber.py new file mode 100644 index 0000000..43ebeae --- /dev/null +++ b/1code/guessnumber.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +# coding=utf-8 + +import random + +i=0 +while i < 4: + print('********************************') + num = input('请您输入0到9任一个数:') + + xnum = random.randint(0,9) + + x = 3 - i + + if num == xnum: + print('运气真好,您猜对了!') + break + elif num > xnum: + print('''您猜大了!\n哈哈,正确答案是:%s\n您还有%s次机会!''' %(xnum,x)) + elif num < xnum: + print('''您猜小了!\n哈哈,正确答案是:%s\n您还有%s次机会!''' %(xnum,x)) + print('********************************') + + i += 1 + diff --git a/1code/guessnumber2.py b/1code/guessnumber2.py new file mode 100644 index 0000000..52fea10 --- /dev/null +++ b/1code/guessnumber2.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python +# coding=utf-8 + +import random + +number = random.randint(1,100) + +guess = 0 + +while True: + + num_input = input("please input one integer that is in 1 to 100:") + guess += 1 + + if not num_input.isdigit(): + print("Please input interger.") + elif int(num_input) < 0 or int(num_input) >= 100: + print("The number should be in 1 to 100.") + else: + if number == int(num_input): + print("OK, you are good.It is only %d, then you successed." % guess) + break + elif number > int(num_input): + print("your number is smaller.") + elif number < int(num_input): + print("your number is bigger.") + else: + print("There is something bad, I will not work") + diff --git a/1code/helloworld.py b/1code/helloworld.py new file mode 100644 index 0000000..de111d0 --- /dev/null +++ b/1code/helloworld.py @@ -0,0 +1,3 @@ +# coding:utf-8 + +print("Hello, World") diff --git a/1code/judgenumber.py b/1code/judgenumber.py new file mode 100644 index 0000000..965c057 --- /dev/null +++ b/1code/judgenumber.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +# coding=utf-8 + +print("请输入任意一个整数数字:") +number = int(input()) + +if number == 10: + print("您输入的数字是:{}".format(number)) + print("You are SMART.") +elif number > 10: + print("您输入的数字是:{}".format(number)) + print("This number is more than 10.") +else: + print("您输入的数字是:{}".format(number)) + print("This number is less than 10.") + diff --git a/1code/nameage.py b/1code/nameage.py new file mode 100644 index 0000000..cf9847a --- /dev/null +++ b/1code/nameage.py @@ -0,0 +1,14 @@ +# coding:utf-8 +''' +filename: nameage.py +''' + +name = input("What is your name?") +age = input("How old are you?") + +print("Your name is: ", name) +print("You are " + age + " years old.") + +after_ten = int(age) + 10 +print("You will be " + str(after_ten) + " years old after ten years.") + diff --git a/1code/simplemath.py b/1code/simplemath.py new file mode 100644 index 0000000..78d2133 --- /dev/null +++ b/1code/simplemath.py @@ -0,0 +1,9 @@ +#coding: utf-8 + +""" +请计算:19+2*4-8/2 +""" + +a = 19 + 2 * 4 - 8 / 2 +print(a) + diff --git a/1code/simplewhileloop.py b/1code/simplewhileloop.py new file mode 100644 index 0000000..70e7fe9 --- /dev/null +++ b/1code/simplewhileloop.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +# coding=utf-8 + +a = 1 +while a: + if a%2 == 0: + break + else: + print("{} is odd number".format(a)) + a -= 1 +print("{} is even number".format(a)) + diff --git a/1code/simplewhileloop2.py b/1code/simplewhileloop2.py new file mode 100644 index 0000000..a215b28 --- /dev/null +++ b/1code/simplewhileloop2.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +# coding=utf-8 + +a = 9 +while a: + if a%2 == 0: + a -=1 + continue #如果是偶数,就返回循环的开始 + else: + print("{} is odd number".format(a)) #如果是奇数,就打印出来 + a -=1 + diff --git a/1code/you.md b/1code/you.md new file mode 100644 index 0000000..d4716fe --- /dev/null +++ b/1code/you.md @@ -0,0 +1,9 @@ +You Raise Me Up +When I am down and, oh my soul, so weary; +When troubles come and my heart burdened be; +Then, I am still and wait here in the silence, +Until you come and sit awhile with me. +You raise me up, so I can stand on mountains; +You raise me up, to walk on stormy seas; +I am strong, when I am on your shoulders; +You raise me up: To more than I can be. diff --git a/1images/10101.png b/1images/10101.png new file mode 100644 index 0000000..0329131 Binary files /dev/null and b/1images/10101.png differ diff --git a/1images/10102.png b/1images/10102.png new file mode 100644 index 0000000..093ea8d Binary files /dev/null and b/1images/10102.png differ diff --git a/1images/10103.png b/1images/10103.png new file mode 100644 index 0000000..cced87a Binary files /dev/null and b/1images/10103.png differ diff --git a/1images/10201.jpg b/1images/10201.jpg new file mode 100644 index 0000000..f888217 Binary files /dev/null and b/1images/10201.jpg differ diff --git a/1images/10501.png b/1images/10501.png new file mode 100644 index 0000000..4df2caf Binary files /dev/null and b/1images/10501.png differ diff --git a/1images/10502.png b/1images/10502.png new file mode 100644 index 0000000..6bf0312 Binary files /dev/null and b/1images/10502.png differ diff --git a/1images/10503.png b/1images/10503.png new file mode 100644 index 0000000..e1f8adb Binary files /dev/null and b/1images/10503.png differ diff --git a/1images/10504.png b/1images/10504.png new file mode 100644 index 0000000..4f82bec Binary files /dev/null and b/1images/10504.png differ diff --git a/1images/10505.png b/1images/10505.png new file mode 100644 index 0000000..f0b6463 Binary files /dev/null and b/1images/10505.png differ diff --git a/1images/10506.png b/1images/10506.png new file mode 100644 index 0000000..dde698d Binary files /dev/null and b/1images/10506.png differ diff --git a/1images/10507.png b/1images/10507.png new file mode 100644 index 0000000..2b2ff09 Binary files /dev/null and b/1images/10507.png differ diff --git a/1images/10508.jpg b/1images/10508.jpg new file mode 100644 index 0000000..af8fa52 Binary files /dev/null and b/1images/10508.jpg differ diff --git a/1images/10901.png b/1images/10901.png new file mode 100644 index 0000000..5231385 Binary files /dev/null and b/1images/10901.png differ diff --git a/1images/11001.png b/1images/11001.png new file mode 100644 index 0000000..9f7f36b Binary files /dev/null and b/1images/11001.png differ diff --git a/1images/11002.png b/1images/11002.png new file mode 100644 index 0000000..aca7f95 Binary files /dev/null and b/1images/11002.png differ diff --git a/1images/11901.png b/1images/11901.png new file mode 100644 index 0000000..86160b6 Binary files /dev/null and b/1images/11901.png differ diff --git a/1images/11902.png b/1images/11902.png new file mode 100644 index 0000000..6229734 Binary files /dev/null and b/1images/11902.png differ diff --git a/1images/11903.png b/1images/11903.png new file mode 100644 index 0000000..0bfa354 Binary files /dev/null and b/1images/11903.png differ diff --git a/1images/11904.png b/1images/11904.png new file mode 100644 index 0000000..9749a93 Binary files /dev/null and b/1images/11904.png differ diff --git a/1images/12201.png b/1images/12201.png new file mode 100644 index 0000000..f25ebef Binary files /dev/null and b/1images/12201.png differ diff --git a/1images/12301.png b/1images/12301.png new file mode 100644 index 0000000..7b37a94 Binary files /dev/null and b/1images/12301.png differ diff --git a/1images/12501.png b/1images/12501.png new file mode 100644 index 0000000..da01b81 Binary files /dev/null and b/1images/12501.png differ diff --git a/1images/12601.png b/1images/12601.png new file mode 100644 index 0000000..db3007c Binary files /dev/null and b/1images/12601.png differ diff --git a/1images/12602.png b/1images/12602.png new file mode 100644 index 0000000..f4f05d1 Binary files /dev/null and b/1images/12602.png differ diff --git a/1images/12603.png b/1images/12603.png new file mode 100644 index 0000000..e0d85eb Binary files /dev/null and b/1images/12603.png differ diff --git a/2code/20202.py b/2code/20202.py new file mode 100644 index 0000000..fd96262 --- /dev/null +++ b/2code/20202.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +# coding=utf-8 + +def fibs(n): + """ + This is a Fibonacci sequence. + """ + result = [0,1] + for i in range(n-2): + result.append(result[-2] + result[-1]) + return result + +if __name__ == "__main__": + #lst = fibs(10) + #print lst + fibs(10) diff --git a/2code/20401.py b/2code/20401.py new file mode 100644 index 0000000..c807b45 --- /dev/null +++ b/2code/20401.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python +# coding=utf-8 + +def fib(n): + """ + This is Fibonacci by Recursion. + """ + if n==0: + return 0 + elif n==1: + return 1 + else: + return fib(n-1) + fib(n-2) + +if __name__ == "__main__": + f = fib(10) + print f diff --git a/2code/20402.py b/2code/20402.py new file mode 100644 index 0000000..d3a377f --- /dev/null +++ b/2code/20402.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python +# coding=utf-8 + +""" +the better Fibonacci +""" + +meno = {0:0, 1:1} + +def fib(n): + if not n in meno: + meno[n] = fib(n-1) + fib(n-2) + return meno[n] + +if __name__ == "__main__": + f = fib(10) + print f diff --git a/2code/20403.py b/2code/20403.py new file mode 100644 index 0000000..739faf9 --- /dev/null +++ b/2code/20403.py @@ -0,0 +1,10 @@ +#! /usr/bin/env python +# coding:utf-8 + +def convert(func, seq): + return [func(i) for i in seq] + +if __name__ == "__main__": + myseq = (111, 3.14, -9.21) + r = convert(str, myseq) + print r diff --git a/2code/20501.py b/2code/20501.py new file mode 100644 index 0000000..1ba535d --- /dev/null +++ b/2code/20501.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python +# coding=utf-8 + +""" +solving a quadratic equation +""" + +from __future__ import division +import math + +def quadratic_equation(a,b,c): + delta = b*b - 4*a*c + if delta<0: + return False + elif delta==0: + return -(b/(2*a)) + else: + sqrt_delta = math.sqrt(delta) + x1 = (-b + sqrt_delta)/(2*a) + x2 = (-b - sqrt_delta)/(2*a) + return x1, x2 + +if __name__ == "__main__": + print "a quadratic equation: x^2 + 3x + 2 = 0" + coefficients = (1, 3, 2) + roots = quadratic_equation(*coefficients) + if roots: + print "the result is:",roots + else: + print "this equation has no solution." diff --git a/2code/20501p3.py b/2code/20501p3.py new file mode 100644 index 0000000..95ca171 --- /dev/null +++ b/2code/20501p3.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python +# coding=utf-8 + +""" +solving a quadratic equation +""" + +import math + +def quadratic_equation(a,b,c): + delta = b*b - 4*a*c + if delta<0: + return False + elif delta==0: + return -(b/(2*a)) + else: + sqrt_delta = math.sqrt(delta) + x1 = (-b + sqrt_delta)/(2*a) + x2 = (-b - sqrt_delta)/(2*a) + return x1, x2 +if __name__ == "__main__": + print("a quadratic equation: x^2 + 2x + 1 = 0") + coefficients = (1, 2, 1) + roots = quadratic_equation(*coefficients) + if roots: + print("the result is:{}".format(roots)) + else: + print("this equation has no solution.") diff --git a/2code/20502.py b/2code/20502.py new file mode 100644 index 0000000..c978441 --- /dev/null +++ b/2code/20502.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python +# coding=utf-8 +""" +count the examine scores +""" +from __future__ import division + +def average_score(scores): + """ + count average score. + """ + score_values = scores.values() + sum_scores = sum(score_values) + average = sum_scores/len(score_values) + return average + +def sorted_score(scores): + """ + count the list for max to min. + """ + score_lst = [(scores[k],k) for k in scores] + sort_lst = sorted(score_lst, reverse=True) + return [(i[1], i[0]) for i in sort_lst] + +def max_score(scores): + """ + the max scroe and the person's name. + """ + lst = sorted_score(scores) + max_score = lst[0][1] + return [(i[0],i[1]) for i in lst if i[1]==max_score] + +def min_score(scores): + """ + the min score and the person's name. + """ + lst = sorted_score(scores) + min_score = lst[len(lst)-1][1] + return [(i[0],i[1]) for i in lst if i[1]==min_score] + +if __name__ == "__main__": + examine_scores = {"google":98, "facebook":99, "baidu":52, "alibaba":80, "yahoo":49, "IBM":70, "android":76, "apple":99, "amazon":99} + + ave = average_score(examine_scores) + print "the average score is: ",ave + + sor = sorted_score(examine_scores) + print "list of the scores: ",sor + + xueba = max_score(examine_scores) + print "Xueba is: ",xueba + + xuezha = min_score(examine_scores) + print "Xuzha is: ",xuezha + diff --git a/2code/20502p3.py b/2code/20502p3.py new file mode 100644 index 0000000..b565dec --- /dev/null +++ b/2code/20502p3.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python +# coding=utf-8 +""" +统计考试成绩 +""" + +def average_score(scores): + """ + 统计平均分. + """ + score_values = scores.values() + sum_scores = sum(score_values) + average = round(sum_scores/len(score_values), 2) # round(a,2) 保留两位小数 + return average + +def sorted_score(scores): + """ + 对成绩从高到低排队. + """ + score_lst = [(scores[k],k) for k in scores] + sort_lst = sorted(score_lst, reverse=True) + return [(i[1], i[0]) for i in sort_lst] + +def max_score(scores): + """ + 成绩最高的姓名和分数. + """ + lst = sorted_score(scores) #引用分数排序的函数sorted_score + max_score = lst[0][1] + return [(i[0],i[1]) for i in lst if i[1]==max_score] + +def min_score(scores): + """ + 成绩最低的姓名和分数. + """ + lst = sorted_score(scores) + min_score = lst[len(lst)-1][1] + return [(i[0],i[1]) for i in lst if i[1]==min_score] + +if __name__ == "__main__": + examine_scores = {"google":98, "facebook":99, "baidu":52, "alibaba":80, "yahoo":49, "IBM":70, "android":76, "apple":99, "amazon":99} + + ave = average_score(examine_scores) + print("the average score is:{}".format(ave)) #平均分 + + sor = sorted_score(examine_scores) + print("list of the scores:{}".format(sor)) #成绩表 + + xueba = max_score(examine_scores) + print("Xueba is:{}".format(xueba)) #学霸们 + + xuezha = min_score(examine_scores) + print("Xuzha is:{}".format(xuezha)) #学渣们 diff --git a/2code/20503.py b/2code/20503.py new file mode 100644 index 0000000..41f5506 --- /dev/null +++ b/2code/20503.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python +# coding=utf-8 + +""" +find the prime +""" + +import math + +def is_prime(n): + """ + a integer is prime or not + """ + if n <= 1: + return False + for i in range(2, int(math.sqrt(n) + 1)): + if n % i == 0: + return False + return True + +if __name__ == "__main__": + primes = [i for i in range(2,100) if is_prime(i)] + print primes diff --git a/2code/20701.py b/2code/20701.py new file mode 100644 index 0000000..e32eb04 --- /dev/null +++ b/2code/20701.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python +# coding=utf-8 + +__metaclass__ = type + +class Person: + def __init__(self, name): + self.name = name + + def getName(self): + #return self.name + return girl.name + + def breast(self, n): + self.breast = n + + def color(self, color): + print "%s is %s" % (self.name, color) + + def how(self): + print "%s breast is %s" % (self.name, self.breast) + +girl = Person('canglaoshi') +name = girl.getName() +print name + +girl.breast(90) + +girl.color("white") +girl.how() diff --git a/2code/20701p3.py b/2code/20701p3.py new file mode 100644 index 0000000..7923143 --- /dev/null +++ b/2code/20701p3.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python +# coding=utf-8 + +class Person: + """ + This is a sample of class. + """ + + def __init__(self, name): + self.name = name + + def get_name(self): + return self.name + + def color(self, color): + d = {} + d[self.name] = color + return d + +if __name__ == "__main__": + girl = Person("canglaoshi") + print(girl.name) + name = girl.get_name() + print(name) + her_color = girl.color("white") + print(her_color) + diff --git a/2code/20702.py b/2code/20702.py new file mode 100644 index 0000000..ae445e0 --- /dev/null +++ b/2code/20702.py @@ -0,0 +1,16 @@ +#! /usr/bin/env python +# coding:utf-8 + +def convert(func, seq): + return [func(i) for i in seq] + +def num(n): + if n%2 == 0: + return n**n + else: + return n*n + +if __name__ == "__main__": + myseq = (3, 4, 5) + r = convert(num, myseq) + print r #Python 3: print(r) diff --git a/2code/20703.py b/2code/20703.py new file mode 100644 index 0000000..4903672 --- /dev/null +++ b/2code/20703.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +#coding:utf-8 + +def foo(): + def bar(): + print "bar() is running" + bar() + print "foo() is running" + +#foo() +bar() diff --git a/2code/20703p3.py b/2code/20703p3.py new file mode 100644 index 0000000..fda0e6d --- /dev/null +++ b/2code/20703p3.py @@ -0,0 +1,10 @@ +def foo(): + a = 1 + def bar(): + nonlocal a + a = a + 1 + print("bar()a=",a) + bar() + print("foo()a=",a) + +foo() diff --git a/2code/20704.py b/2code/20704.py new file mode 100644 index 0000000..09f3af6 --- /dev/null +++ b/2code/20704.py @@ -0,0 +1,25 @@ + +def foo(fun): + def wrap(): + print "start" + fun() + print "end" + print fun.__name__ + return wrap + +@foo +def bar(): + print "I am in bar()" + + +bar() + + +#start +#I am in bar() +#end +#bar +#I am in bar() +#f = foo(bar) +#f() + diff --git a/2code/20801p3.py b/2code/20801p3.py new file mode 100644 index 0000000..638857e --- /dev/null +++ b/2code/20801p3.py @@ -0,0 +1,7 @@ + +class Foo: + def __init__(self): + print("I am in init()") + return None + +bar = Foo() diff --git a/2code/20901.py b/2code/20901.py new file mode 100644 index 0000000..aba5179 --- /dev/null +++ b/2code/20901.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +# coding=utf-8 + +__metaclass__ = type + +class Person: + def speak(self): + print "I love you." + + def setHeight(self, n): + self.length = n + + def breast(self, n): + print "My breast is: ",n + +class Girl(Person): + def setHeight(self): + print "The height is:1.70m ." + +if __name__ == "__main__": + cang = Girl() + cang.setHeight() + cang.speak() + cang.breast(90) diff --git a/2code/20902.py b/2code/20902.py new file mode 100644 index 0000000..399927a --- /dev/null +++ b/2code/20902.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python +# coding=utf-8 + +__metaclass__ = type + +class Person: + + def eye(self): + print "two eyes" + + def breast(self, n): + print "The breast is: ",n + +class Girl: + age = 28 + def color(self): + print "The girl is white" + +class HotGirl(Person, Girl): + pass + +if __name__ == "__main__": + kong = HotGirl() + kong.eye() + kong.breast(90) + kong.color() + print kong.age diff --git a/2code/20902_1.py b/2code/20902_1.py new file mode 100644 index 0000000..088a73a --- /dev/null +++ b/2code/20902_1.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python +# coding=utf-8 + +__metaclass__ = type + +class Person: + + def eye(self): + print "two eyes" + + def breast(self, n): + print "The breast is: ",n + +class Girl: + age = 28 + def color(self): + print "The girl is white" + def eye(self): + print "girl's eyes are big." + +class HotGirl(Person, Girl): + pass + +if __name__ == "__main__": + kong = HotGirl() + kong.eye() + kong.breast(90) + kong.color() + print kong.age diff --git a/2code/20903.py b/2code/20903.py new file mode 100644 index 0000000..152d946 --- /dev/null +++ b/2code/20903.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +# coding=utf-8 + +__metaclass__ = type + +class Person: + def __init__(self): + self.height = 160 + + def about(self, name): + print "{} is about {}".format(name, self.height) + +class Girl(Person): + def __init__(self): + super(Girl, self).__init__() + self.breast = 90 + + def about(self, name): + print "{} is a hot girl, she is about {}, and her breast is {}".format(name, self.height, self.breast) + super(Girl, self).about(name) + +if __name__ == "__main__": + cang = Girl() + cang.about("canglaoshi") diff --git a/2code/20904.py b/2code/20904.py new file mode 100644 index 0000000..4f132a1 --- /dev/null +++ b/2code/20904.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python +# coding=utf-8 + +class K1(object): + def foo(self): + print "K1-foo" + +class K2(object): + def foo(self): + print "K2-foo" + def bar(self): + print "K2-bar" + +class J1(K1, K2): + pass + +class J2(K1, K2): + def bar(self): + print "J2-bar" + +class C(J1, J2): + pass + +if __name__ == "__main__": + print C.__mro__ + m = C() + m.foo() + m.bar() + diff --git a/2code/20905.py b/2code/20905.py new file mode 100644 index 0000000..6bbfe82 --- /dev/null +++ b/2code/20905.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python +# coding=utf-8 + +class Person(object): + def __init__(self, name): + self.name = name + + def height(self, m): + h = dict((["height", m],)) + return h + + def breast(self, n): + b = dict((["breast", n],)) + return b + +class Girl(Person): + def __init__(self, name): + #Person.__init__(self, name) + super(Girl, self).__init__(name) + self.real_name = "Aoi sola" + + def get_name(self): + return self.name + +if __name__ == "__main__": + cang = Girl("canglaoshi") + print cang.real_name + print cang.get_name() + print cang.height(160) + print cang.breast(90) diff --git a/2code/20905p3.py b/2code/20905p3.py new file mode 100644 index 0000000..3dc2722 --- /dev/null +++ b/2code/20905p3.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python +# coding=utf-8 + +class Person: + def __init__(self, name): + self.name = name + + def height(self, m): + h = dict((["height", m],)) + return h + + def breast(self, n): + b = dict((["breast", n],)) + return b + +class Girl(Person): + def __init__(self,name): + super(Girl, self).__init__(name) + self.real_name = "Aoi sola" + + def get_name(self): + return self.name + +if __name__ == "__main__": + cang = Girl("canglaoshi") + print(cang.get_name()) + print(cang.height(160)) + print(cang.breast(90)) diff --git a/2code/21001.py b/2code/21001.py new file mode 100644 index 0000000..6296047 --- /dev/null +++ b/2code/21001.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +# coding=utf-8 + +__metaclass__ = type + +class StaticMethod: + @staticmethod + def foo(): + print "This is static method foo()." + + +class ClassMethod: + @classmethod + def bar(cls): + print "This is class method bar()." + print "bar() is part of class:", cls.__name__ + +if __name__ == "__main__": + static_foo = StaticMethod() + static_foo.foo() + StaticMethod.foo() + print "********" + class_bar = ClassMethod() + class_bar.bar() + ClassMethod.bar() diff --git a/2code/21101.py b/2code/21101.py new file mode 100644 index 0000000..d2df455 --- /dev/null +++ b/2code/21101.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python +# coding=utf-8 + +"the code is from: http://zetcode.com/lang/python/oop/" + +__metaclass__ = type + +class Animal: + def __init__(self, name=""): + self.name = name + + def talk(self): + pass + +class Cat(Animal): + def talk(self): + print "Meow!" + +class Dog(Animal): + def talk(self): + print "Woof!" + + +a = Animal() +a.talk() + +c = Cat("Missy") +c.talk() + +d = Dog("Rocky") +d.talk() diff --git a/2code/21102.py b/2code/21102.py new file mode 100644 index 0000000..f922f37 --- /dev/null +++ b/2code/21102.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python +# coding=utf-8 + +__metaclass__ = type + +class ProtectMe: + def __init__(self): + self.me = "qiwsir" + self.__name = "kivi" + + def __python(self): + print "I love Python." + + def code(self): + print "Which language do you like?" + self.__python() + + @property + def name(self): + return self.__name + +if __name__ == "__main__": + p = ProtectMe() + #print p.me + print p.name + #p.code() + #p._ProtectMe.__python() + diff --git a/2code/21301.py b/2code/21301.py new file mode 100644 index 0000000..fe0fb15 --- /dev/null +++ b/2code/21301.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +# coding=utf-8 + +""" +study __getattr__ and __setattr__ +""" + +class Rectangle(object): + """ + the width and length of Rectangle + """ + def __init__(self): + self.width = 0 + self.length = 0 + + def setSize(self, size): + self.width, self.length = size + def getSize(self): + return self.width, self.length + size = property(getSize, setSize) + +class NewRectangle(object): + def __init__(self): + self.width = 0 + self.length = 0 + + def __setattr__(self, name, value): + if name == "size": + self.width, self.length = value + else: + self.__dict__[name] = value + + def __getattr__(self, name): + if name == "size": + return self.width, self.length + else: + raise AttributeError + +if __name__ == "__main__": + r = NewRectangle() + r.width = 3 + r.length = 4 + print r.size + r.size = 30, 40 + print r.width + print r.length + diff --git a/2code/21302.py b/2code/21302.py new file mode 100644 index 0000000..34e338c --- /dev/null +++ b/2code/21302.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python +# coding=utf-8 + +class A(object): + author = "qiwsir" + def __getattr__(self, name): + if name != "author": + return "from starter to master." + +if __name__ == "__main__": + a = A() + print a.author + print a.lang diff --git a/2code/21401.py b/2code/21401.py new file mode 100644 index 0000000..9a1924d --- /dev/null +++ b/2code/21401.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python +# coding=utf-8 + +""" +the interator as range() +""" +class MyRange(object): + def __init__(self, n): + self.i = 1 + self.n = n + + def __iter__(self): + return self + + def next(self): + if self.i <= self.n: + i = self.i + self.i += 1 + return i + else: + raise StopIteration() + +if __name__ == "__main__": + x = MyRange(3) + print "self.n=",x.n,";","self.i=",x.i + x.next() + print "self.n=",x.n,";","self.i=",x.i + x.next() + print "self.n=",x.n,";","self.i=",x.i + x.next() + print "self.n=",x.n,";","self.i=",x.i + x.next() + print "self.n=",x.n,";","self.i=",x.i + + #print [i for i in x] + #print list(x) + #print "x.next()==>", x.next() + #print "x.next()==>", x.next() + #print "------for loop--------" + #for i in x: + # print i diff --git a/2code/21401p3.py b/2code/21401p3.py new file mode 100644 index 0000000..107b94e --- /dev/null +++ b/2code/21401p3.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python +# coding=utf-8 + +""" +the interator as range() +""" +class MyRange(object): + def __init__(self, n): + self.i = 1 + self.n = n + + def __iter__(self): + return self + + def __next__(self): + if self.i <= self.n: + i = self.i + self.i += 1 + return i + else: + raise StopIteration() + +if __name__ == "__main__": + x = MyRange(7) + print([i for i in x]) + #print list(x) + #print "x.next()==>", x.next() + #print "x.next()==>", x.next() + #print "------for loop--------" + #for i in x: + # print i diff --git a/2code/21402.py b/2code/21402.py new file mode 100644 index 0000000..368cd9a --- /dev/null +++ b/2code/21402.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python +# coding=utf-8 +""" +compute Fibonacci by iterator +""" +__metaclass__ = type + +class Fibs: + def __init__(self, max): + self.max = max + self.a = 0 + self.b = 1 + + def __iter__(self): + return self + + def next(self): + fib = self.a + if fib > self.max: + raise StopIteration + self.a, self.b = self.b, self.a + self.b + return fib + +if __name__ == "__main__": + fibs = Fibs(5) + print list(fibs) + + diff --git a/2code/21501.py b/2code/21501.py new file mode 100644 index 0000000..fc06099 --- /dev/null +++ b/2code/21501.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +# coding=utf-8 + +def fibs(max): + n, a, b = 0, 0, 1 + while n < max: + yield b + a, b = b, a + b + n = n + 1 + +if __name__ == "__main__": + f = fibs(10) + for i in f: + print i , diff --git a/2code/21601.py b/2code/21601.py new file mode 100644 index 0000000..947780f --- /dev/null +++ b/2code/21601.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +# coding=utf-8 + +""" +try... except +""" + +while 1: + print "this is a division program." + c = raw_input("input 'c' continue, otherwise logout:") + if c == 'c': + a = raw_input("first number:") + b = raw_input("second number:") + try: + print float(a)/float(b) + print "*************************" + except ZeroDivisionError: + print "The second number can't be zero!" + print "*************************" + else: + break + diff --git a/2code/21601p3.py b/2code/21601p3.py new file mode 100644 index 0000000..e3cef24 --- /dev/null +++ b/2code/21601p3.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python +# coding=utf-8 + +while 1: + print("this is a division program.") + c = input("input 'c' continue, otherwise logout:") + if c == 'c': + a = input("first number:") + b = input("second number:") + try: + print(float(a)/float(b)) + print("*************************") + except ZeroDivisionError: + print("The second number can't be zero!") + print("*************************") + else: + break diff --git a/2code/21602.py b/2code/21602.py new file mode 100644 index 0000000..151ca36 --- /dev/null +++ b/2code/21602.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +# coding=utf-8 + +class Calculator(object): + is_raise = False + def calc(self, express): + try: + return eval(express) + except ZeroDivisionError: + if self.is_raise: + print "zero can not be division." + else: + raise + +if __name__ == "__main__": + c = Calculator() + c.is_raise = True + print c.calc("8/0") diff --git a/2code/21701.py b/2code/21701.py new file mode 100644 index 0000000..c0441af --- /dev/null +++ b/2code/21701.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python +# coding=utf-8 + +""" +try... except +""" + +while 1: + print("this is a division program.") + c = input("input 'c' continue, otherwise logout:") + if c == 'c': + a = input("first number:") + b = input("second number:") + try: + print(float(a)/float(b)) + print("*************************") + #except ZeroDivisionError: + # print("The second number can't be zero!") + # print("*************************") + #except ValueError: + # print("please input number.") + # print("************************") + except (ZeroDivisionError, ValueError) as e: + print(e) + #print("please input rightly.") + print("********************") + else: + break + diff --git a/2code/21702.py b/2code/21702.py new file mode 100644 index 0000000..5a703c4 --- /dev/null +++ b/2code/21702.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python +# coding=utf-8 + +""" +try... except +""" + +while 1: + print "this is a division program." + c = raw_input("input 'c' continue, otherwise logout:") + if c == 'c': + a = raw_input("first number:") + b = raw_input("second number:") + try: + print float(a)/float(b) + print "*************************" + #except ZeroDivisionError: + # print "The second number can't be zero!" + # print "*************************" + #except ValueError: + # print "please input number." + # print "************************" + except: + print "some wrong..." + print "********************" + else: + break + diff --git a/2code/21703.py b/2code/21703.py new file mode 100644 index 0000000..c7af5a9 --- /dev/null +++ b/2code/21703.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +# coding=utf-8 +while 1: + try: + x = raw_input("the first number:") + y = raw_input("the second number:") + + r = float(x)/float(y) + print r + except Exception, b: + print b + print "try again." + else: + break diff --git a/2code/21703p3.py b/2code/21703p3.py new file mode 100644 index 0000000..1bd4040 --- /dev/null +++ b/2code/21703p3.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +# coding=utf-8 +while 1: + try: + x = input("the first number:") + y = input("the second number:") + + r = float(x)/float(y) + print(r) + except Exception as e: + print(e) + print("try again.") + else: + break diff --git a/2code/21801.py b/2code/21801.py new file mode 100644 index 0000000..9d4884f --- /dev/null +++ b/2code/21801.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +# coding=utf-8 + +class Account(object): + def __init__(self, number): + self.number = number + self.balance = 0 + + def deposit(self, amount): + assert amount > 0 + self.balance += balance + + def withdraw(self, amount): + assert amount > 0 + if amount <= self.balance: + self.balance -= amount + else: + print "balance is not enough." + +if __name__ == "__main__": + a = Account(1000) + a.deposit(-10) diff --git a/2code/22101.py b/2code/22101.py new file mode 100644 index 0000000..a656fce --- /dev/null +++ b/2code/22101.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python +# coding=utf-8 + +import sys + +print "The file name: ", sys.argv[0] +print "The number of argument", len(sys.argv) +print "The argument is: ", str(sys.argv) diff --git a/2code/22102.py b/2code/22102.py new file mode 100644 index 0000000..b05010e --- /dev/null +++ b/2code/22102.py @@ -0,0 +1,6 @@ +#!/usr/bin/env python +# coding=utf-8 + +import sys + +sys.exit("hello") diff --git a/2code/22102p3.py b/2code/22102p3.py new file mode 100644 index 0000000..df4ecb0 --- /dev/null +++ b/2code/22102p3.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +# coding=utf-8 + +import sys + +#sys.exit("hello") +for i in range(10): + if i == 5: + sys.exit() + else: + print(i) diff --git a/2code/22103.py b/2code/22103.py new file mode 100644 index 0000000..be9c3d6 --- /dev/null +++ b/2code/22103.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +# coding=utf-8 + +import copy + +class MyCopy(object): + def __init__(self, value): + self.value = value + + def __repr__(self): + return str(self.value) + +foo = MyCopy(7) + +a = ["foo", foo] +b = a[:] +c = list(a) +d = copy.copy(a) +e = copy.deepcopy(a) + +a.append("abc") +foo.value = 17 + +print("original: {0}\n slice: {1}\n list(): {2}\n copy(): {3}\n deepcopy(): {4}\n".format(a,b,c,d,e)) diff --git a/2code/22501.py b/2code/22501.py new file mode 100644 index 0000000..b10a271 --- /dev/null +++ b/2code/22501.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +# coding=utf-8 + +import urllib + +def go(a,b,c): + per = 100.0 * a * b / c + if per > 100: + per = 100 + print "%.2f%%" % per + +url = "http://youxi.66wz.com/uploads/1046/1321/11410192.90d133701b06f0cc2826c3e5ac34c620.jpg" +local = "/home/qw/Pictures/g.jpg" +urllib.urlretrieve(url, local, go) diff --git a/2code/22601.xml b/2code/22601.xml new file mode 100644 index 0000000..45a12d9 --- /dev/null +++ b/2code/22601.xml @@ -0,0 +1,8 @@ + + + Everyday Italian + Giada De Laurentiis + 2005 + 37.0 + + python \ No newline at end of file diff --git a/2code/22701.py b/2code/22701.py new file mode 100644 index 0000000..da09e64 --- /dev/null +++ b/2code/22701.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# coding=utf-8 + +import json + +class Person(object): + def __init__(self,name,age): + self.name = name + self.age = age + + def __repr__(self): + return 'Person Object name : %s , age : %d' % (self.name,self.age) + + +def object2dict(obj): #convert Person to dict + d = {} + d['__class__'] = obj.__class__.__name__ + d['__module__'] = obj.__module__ + d.update(obj.__dict__) + return d + +def dict2object(d): #convert dict ot Person + if '__class__' in d: + class_name = d.pop('__class__') + module_name = d.pop('__module__') + module = __import__(module_name) + class_ = getattr(module, class_name) + args = dict((key.encode('ascii'), value) for key,value in d.items()) #get args + inst = class_(**args) #create new instance + else: + inst = d + return inst + + +if __name__ == '__main__': + p = Person('Peter',40) + print p + d = object2dict(p) + print d + o = dict2object(d) + print type(o), o + + dump = json.dumps(p, default=object2dict) + print dump + load = json.loads(dump, object_hook=dict2object) + print load diff --git a/2code/22901.dat b/2code/22901.dat new file mode 100644 index 0000000..f521265 --- /dev/null +++ b/2code/22901.dat @@ -0,0 +1,7 @@ +(lp0 +I1 +aI2 +aI3 +aI4 +aI5 +a. \ No newline at end of file diff --git a/2code/22901.db b/2code/22901.db new file mode 100644 index 0000000..0fe8ffb Binary files /dev/null and b/2code/22901.db differ diff --git a/2code/22902.dat b/2code/22902.dat new file mode 100644 index 0000000..a950eeb --- /dev/null +++ b/2code/22902.dat @@ -0,0 +1,10004 @@ +(dp0 +S'i' +p1 +(lp2 +I0 +aI1 +aI2 +aI3 +aI4 +aI5 +aI6 +aI7 +aI8 +aI9 +aI10 +aI11 +aI12 +aI13 +aI14 +aI15 +aI16 +aI17 +aI18 +aI19 +aI20 +aI21 +aI22 +aI23 +aI24 +aI25 +aI26 +aI27 +aI28 +aI29 +aI30 +aI31 +aI32 +aI33 +aI34 +aI35 +aI36 +aI37 +aI38 +aI39 +aI40 +aI41 +aI42 +aI43 +aI44 +aI45 +aI46 +aI47 +aI48 +aI49 +aI50 +aI51 +aI52 +aI53 +aI54 +aI55 +aI56 +aI57 +aI58 +aI59 +aI60 +aI61 +aI62 +aI63 +aI64 +aI65 +aI66 +aI67 +aI68 +aI69 +aI70 +aI71 +aI72 +aI73 +aI74 +aI75 +aI76 +aI77 +aI78 +aI79 +aI80 +aI81 +aI82 +aI83 +aI84 +aI85 +aI86 +aI87 +aI88 +aI89 +aI90 +aI91 +aI92 +aI93 +aI94 +aI95 +aI96 +aI97 +aI98 +aI99 +aI100 +aI101 +aI102 +aI103 +aI104 +aI105 +aI106 +aI107 +aI108 +aI109 +aI110 +aI111 +aI112 +aI113 +aI114 +aI115 +aI116 +aI117 +aI118 +aI119 +aI120 +aI121 +aI122 +aI123 +aI124 +aI125 +aI126 +aI127 +aI128 +aI129 +aI130 +aI131 +aI132 +aI133 +aI134 +aI135 +aI136 +aI137 +aI138 +aI139 +aI140 +aI141 +aI142 +aI143 +aI144 +aI145 +aI146 +aI147 +aI148 +aI149 +aI150 +aI151 +aI152 +aI153 +aI154 +aI155 +aI156 +aI157 +aI158 +aI159 +aI160 +aI161 +aI162 +aI163 +aI164 +aI165 +aI166 +aI167 +aI168 +aI169 +aI170 +aI171 +aI172 +aI173 +aI174 +aI175 +aI176 +aI177 +aI178 +aI179 +aI180 +aI181 +aI182 +aI183 +aI184 +aI185 +aI186 +aI187 +aI188 +aI189 +aI190 +aI191 +aI192 +aI193 +aI194 +aI195 +aI196 +aI197 +aI198 +aI199 +aI200 +aI201 +aI202 +aI203 +aI204 +aI205 +aI206 +aI207 +aI208 +aI209 +aI210 +aI211 +aI212 +aI213 +aI214 +aI215 +aI216 +aI217 +aI218 +aI219 +aI220 +aI221 +aI222 +aI223 +aI224 +aI225 +aI226 +aI227 +aI228 +aI229 +aI230 +aI231 +aI232 +aI233 +aI234 +aI235 +aI236 +aI237 +aI238 +aI239 +aI240 +aI241 +aI242 +aI243 +aI244 +aI245 +aI246 +aI247 +aI248 +aI249 +aI250 +aI251 +aI252 +aI253 +aI254 +aI255 +aI256 +aI257 +aI258 +aI259 +aI260 +aI261 +aI262 +aI263 +aI264 +aI265 +aI266 +aI267 +aI268 +aI269 +aI270 +aI271 +aI272 +aI273 +aI274 +aI275 +aI276 +aI277 +aI278 +aI279 +aI280 +aI281 +aI282 +aI283 +aI284 +aI285 +aI286 +aI287 +aI288 +aI289 +aI290 +aI291 +aI292 +aI293 +aI294 +aI295 +aI296 +aI297 +aI298 +aI299 +aI300 +aI301 +aI302 +aI303 +aI304 +aI305 +aI306 +aI307 +aI308 +aI309 +aI310 +aI311 +aI312 +aI313 +aI314 +aI315 +aI316 +aI317 +aI318 +aI319 +aI320 +aI321 +aI322 +aI323 +aI324 +aI325 +aI326 +aI327 +aI328 +aI329 +aI330 +aI331 +aI332 +aI333 +aI334 +aI335 +aI336 +aI337 +aI338 +aI339 +aI340 +aI341 +aI342 +aI343 +aI344 +aI345 +aI346 +aI347 +aI348 +aI349 +aI350 +aI351 +aI352 +aI353 +aI354 +aI355 +aI356 +aI357 +aI358 +aI359 +aI360 +aI361 +aI362 +aI363 +aI364 +aI365 +aI366 +aI367 +aI368 +aI369 +aI370 +aI371 +aI372 +aI373 +aI374 +aI375 +aI376 +aI377 +aI378 +aI379 +aI380 +aI381 +aI382 +aI383 +aI384 +aI385 +aI386 +aI387 +aI388 +aI389 +aI390 +aI391 +aI392 +aI393 +aI394 +aI395 +aI396 +aI397 +aI398 +aI399 +aI400 +aI401 +aI402 +aI403 +aI404 +aI405 +aI406 +aI407 +aI408 +aI409 +aI410 +aI411 +aI412 +aI413 +aI414 +aI415 +aI416 +aI417 +aI418 +aI419 +aI420 +aI421 +aI422 +aI423 +aI424 +aI425 +aI426 +aI427 +aI428 +aI429 +aI430 +aI431 +aI432 +aI433 +aI434 +aI435 +aI436 +aI437 +aI438 +aI439 +aI440 +aI441 +aI442 +aI443 +aI444 +aI445 +aI446 +aI447 +aI448 +aI449 +aI450 +aI451 +aI452 +aI453 +aI454 +aI455 +aI456 +aI457 +aI458 +aI459 +aI460 +aI461 +aI462 +aI463 +aI464 +aI465 +aI466 +aI467 +aI468 +aI469 +aI470 +aI471 +aI472 +aI473 +aI474 +aI475 +aI476 +aI477 +aI478 +aI479 +aI480 +aI481 +aI482 +aI483 +aI484 +aI485 +aI486 +aI487 +aI488 +aI489 +aI490 +aI491 +aI492 +aI493 +aI494 +aI495 +aI496 +aI497 +aI498 +aI499 +aI500 +aI501 +aI502 +aI503 +aI504 +aI505 +aI506 +aI507 +aI508 +aI509 +aI510 +aI511 +aI512 +aI513 +aI514 +aI515 +aI516 +aI517 +aI518 +aI519 +aI520 +aI521 +aI522 +aI523 +aI524 +aI525 +aI526 +aI527 +aI528 +aI529 +aI530 +aI531 +aI532 +aI533 +aI534 +aI535 +aI536 +aI537 +aI538 +aI539 +aI540 +aI541 +aI542 +aI543 +aI544 +aI545 +aI546 +aI547 +aI548 +aI549 +aI550 +aI551 +aI552 +aI553 +aI554 +aI555 +aI556 +aI557 +aI558 +aI559 +aI560 +aI561 +aI562 +aI563 +aI564 +aI565 +aI566 +aI567 +aI568 +aI569 +aI570 +aI571 +aI572 +aI573 +aI574 +aI575 +aI576 +aI577 +aI578 +aI579 +aI580 +aI581 +aI582 +aI583 +aI584 +aI585 +aI586 +aI587 +aI588 +aI589 +aI590 +aI591 +aI592 +aI593 +aI594 +aI595 +aI596 +aI597 +aI598 +aI599 +aI600 +aI601 +aI602 +aI603 +aI604 +aI605 +aI606 +aI607 +aI608 +aI609 +aI610 +aI611 +aI612 +aI613 +aI614 +aI615 +aI616 +aI617 +aI618 +aI619 +aI620 +aI621 +aI622 +aI623 +aI624 +aI625 +aI626 +aI627 +aI628 +aI629 +aI630 +aI631 +aI632 +aI633 +aI634 +aI635 +aI636 +aI637 +aI638 +aI639 +aI640 +aI641 +aI642 +aI643 +aI644 +aI645 +aI646 +aI647 +aI648 +aI649 +aI650 +aI651 +aI652 +aI653 +aI654 +aI655 +aI656 +aI657 +aI658 +aI659 +aI660 +aI661 +aI662 +aI663 +aI664 +aI665 +aI666 +aI667 +aI668 +aI669 +aI670 +aI671 +aI672 +aI673 +aI674 +aI675 +aI676 +aI677 +aI678 +aI679 +aI680 +aI681 +aI682 +aI683 +aI684 +aI685 +aI686 +aI687 +aI688 +aI689 +aI690 +aI691 +aI692 +aI693 +aI694 +aI695 +aI696 +aI697 +aI698 +aI699 +aI700 +aI701 +aI702 +aI703 +aI704 +aI705 +aI706 +aI707 +aI708 +aI709 +aI710 +aI711 +aI712 +aI713 +aI714 +aI715 +aI716 +aI717 +aI718 +aI719 +aI720 +aI721 +aI722 +aI723 +aI724 +aI725 +aI726 +aI727 +aI728 +aI729 +aI730 +aI731 +aI732 +aI733 +aI734 +aI735 +aI736 +aI737 +aI738 +aI739 +aI740 +aI741 +aI742 +aI743 +aI744 +aI745 +aI746 +aI747 +aI748 +aI749 +aI750 +aI751 +aI752 +aI753 +aI754 +aI755 +aI756 +aI757 +aI758 +aI759 +aI760 +aI761 +aI762 +aI763 +aI764 +aI765 +aI766 +aI767 +aI768 +aI769 +aI770 +aI771 +aI772 +aI773 +aI774 +aI775 +aI776 +aI777 +aI778 +aI779 +aI780 +aI781 +aI782 +aI783 +aI784 +aI785 +aI786 +aI787 +aI788 +aI789 +aI790 +aI791 +aI792 +aI793 +aI794 +aI795 +aI796 +aI797 +aI798 +aI799 +aI800 +aI801 +aI802 +aI803 +aI804 +aI805 +aI806 +aI807 +aI808 +aI809 +aI810 +aI811 +aI812 +aI813 +aI814 +aI815 +aI816 +aI817 +aI818 +aI819 +aI820 +aI821 +aI822 +aI823 +aI824 +aI825 +aI826 +aI827 +aI828 +aI829 +aI830 +aI831 +aI832 +aI833 +aI834 +aI835 +aI836 +aI837 +aI838 +aI839 +aI840 +aI841 +aI842 +aI843 +aI844 +aI845 +aI846 +aI847 +aI848 +aI849 +aI850 +aI851 +aI852 +aI853 +aI854 +aI855 +aI856 +aI857 +aI858 +aI859 +aI860 +aI861 +aI862 +aI863 +aI864 +aI865 +aI866 +aI867 +aI868 +aI869 +aI870 +aI871 +aI872 +aI873 +aI874 +aI875 +aI876 +aI877 +aI878 +aI879 +aI880 +aI881 +aI882 +aI883 +aI884 +aI885 +aI886 +aI887 +aI888 +aI889 +aI890 +aI891 +aI892 +aI893 +aI894 +aI895 +aI896 +aI897 +aI898 +aI899 +aI900 +aI901 +aI902 +aI903 +aI904 +aI905 +aI906 +aI907 +aI908 +aI909 +aI910 +aI911 +aI912 +aI913 +aI914 +aI915 +aI916 +aI917 +aI918 +aI919 +aI920 +aI921 +aI922 +aI923 +aI924 +aI925 +aI926 +aI927 +aI928 +aI929 +aI930 +aI931 +aI932 +aI933 +aI934 +aI935 +aI936 +aI937 +aI938 +aI939 +aI940 +aI941 +aI942 +aI943 +aI944 +aI945 +aI946 +aI947 +aI948 +aI949 +aI950 +aI951 +aI952 +aI953 +aI954 +aI955 +aI956 +aI957 +aI958 +aI959 +aI960 +aI961 +aI962 +aI963 +aI964 +aI965 +aI966 +aI967 +aI968 +aI969 +aI970 +aI971 +aI972 +aI973 +aI974 +aI975 +aI976 +aI977 +aI978 +aI979 +aI980 +aI981 +aI982 +aI983 +aI984 +aI985 +aI986 +aI987 +aI988 +aI989 +aI990 +aI991 +aI992 +aI993 +aI994 +aI995 +aI996 +aI997 +aI998 +aI999 +aI1000 +aI1001 +aI1002 +aI1003 +aI1004 +aI1005 +aI1006 +aI1007 +aI1008 +aI1009 +aI1010 +aI1011 +aI1012 +aI1013 +aI1014 +aI1015 +aI1016 +aI1017 +aI1018 +aI1019 +aI1020 +aI1021 +aI1022 +aI1023 +aI1024 +aI1025 +aI1026 +aI1027 +aI1028 +aI1029 +aI1030 +aI1031 +aI1032 +aI1033 +aI1034 +aI1035 +aI1036 +aI1037 +aI1038 +aI1039 +aI1040 +aI1041 +aI1042 +aI1043 +aI1044 +aI1045 +aI1046 +aI1047 +aI1048 +aI1049 +aI1050 +aI1051 +aI1052 +aI1053 +aI1054 +aI1055 +aI1056 +aI1057 +aI1058 +aI1059 +aI1060 +aI1061 +aI1062 +aI1063 +aI1064 +aI1065 +aI1066 +aI1067 +aI1068 +aI1069 +aI1070 +aI1071 +aI1072 +aI1073 +aI1074 +aI1075 +aI1076 +aI1077 +aI1078 +aI1079 +aI1080 +aI1081 +aI1082 +aI1083 +aI1084 +aI1085 +aI1086 +aI1087 +aI1088 +aI1089 +aI1090 +aI1091 +aI1092 +aI1093 +aI1094 +aI1095 +aI1096 +aI1097 +aI1098 +aI1099 +aI1100 +aI1101 +aI1102 +aI1103 +aI1104 +aI1105 +aI1106 +aI1107 +aI1108 +aI1109 +aI1110 +aI1111 +aI1112 +aI1113 +aI1114 +aI1115 +aI1116 +aI1117 +aI1118 +aI1119 +aI1120 +aI1121 +aI1122 +aI1123 +aI1124 +aI1125 +aI1126 +aI1127 +aI1128 +aI1129 +aI1130 +aI1131 +aI1132 +aI1133 +aI1134 +aI1135 +aI1136 +aI1137 +aI1138 +aI1139 +aI1140 +aI1141 +aI1142 +aI1143 +aI1144 +aI1145 +aI1146 +aI1147 +aI1148 +aI1149 +aI1150 +aI1151 +aI1152 +aI1153 +aI1154 +aI1155 +aI1156 +aI1157 +aI1158 +aI1159 +aI1160 +aI1161 +aI1162 +aI1163 +aI1164 +aI1165 +aI1166 +aI1167 +aI1168 +aI1169 +aI1170 +aI1171 +aI1172 +aI1173 +aI1174 +aI1175 +aI1176 +aI1177 +aI1178 +aI1179 +aI1180 +aI1181 +aI1182 +aI1183 +aI1184 +aI1185 +aI1186 +aI1187 +aI1188 +aI1189 +aI1190 +aI1191 +aI1192 +aI1193 +aI1194 +aI1195 +aI1196 +aI1197 +aI1198 +aI1199 +aI1200 +aI1201 +aI1202 +aI1203 +aI1204 +aI1205 +aI1206 +aI1207 +aI1208 +aI1209 +aI1210 +aI1211 +aI1212 +aI1213 +aI1214 +aI1215 +aI1216 +aI1217 +aI1218 +aI1219 +aI1220 +aI1221 +aI1222 +aI1223 +aI1224 +aI1225 +aI1226 +aI1227 +aI1228 +aI1229 +aI1230 +aI1231 +aI1232 +aI1233 +aI1234 +aI1235 +aI1236 +aI1237 +aI1238 +aI1239 +aI1240 +aI1241 +aI1242 +aI1243 +aI1244 +aI1245 +aI1246 +aI1247 +aI1248 +aI1249 +aI1250 +aI1251 +aI1252 +aI1253 +aI1254 +aI1255 +aI1256 +aI1257 +aI1258 +aI1259 +aI1260 +aI1261 +aI1262 +aI1263 +aI1264 +aI1265 +aI1266 +aI1267 +aI1268 +aI1269 +aI1270 +aI1271 +aI1272 +aI1273 +aI1274 +aI1275 +aI1276 +aI1277 +aI1278 +aI1279 +aI1280 +aI1281 +aI1282 +aI1283 +aI1284 +aI1285 +aI1286 +aI1287 +aI1288 +aI1289 +aI1290 +aI1291 +aI1292 +aI1293 +aI1294 +aI1295 +aI1296 +aI1297 +aI1298 +aI1299 +aI1300 +aI1301 +aI1302 +aI1303 +aI1304 +aI1305 +aI1306 +aI1307 +aI1308 +aI1309 +aI1310 +aI1311 +aI1312 +aI1313 +aI1314 +aI1315 +aI1316 +aI1317 +aI1318 +aI1319 +aI1320 +aI1321 +aI1322 +aI1323 +aI1324 +aI1325 +aI1326 +aI1327 +aI1328 +aI1329 +aI1330 +aI1331 +aI1332 +aI1333 +aI1334 +aI1335 +aI1336 +aI1337 +aI1338 +aI1339 +aI1340 +aI1341 +aI1342 +aI1343 +aI1344 +aI1345 +aI1346 +aI1347 +aI1348 +aI1349 +aI1350 +aI1351 +aI1352 +aI1353 +aI1354 +aI1355 +aI1356 +aI1357 +aI1358 +aI1359 +aI1360 +aI1361 +aI1362 +aI1363 +aI1364 +aI1365 +aI1366 +aI1367 +aI1368 +aI1369 +aI1370 +aI1371 +aI1372 +aI1373 +aI1374 +aI1375 +aI1376 +aI1377 +aI1378 +aI1379 +aI1380 +aI1381 +aI1382 +aI1383 +aI1384 +aI1385 +aI1386 +aI1387 +aI1388 +aI1389 +aI1390 +aI1391 +aI1392 +aI1393 +aI1394 +aI1395 +aI1396 +aI1397 +aI1398 +aI1399 +aI1400 +aI1401 +aI1402 +aI1403 +aI1404 +aI1405 +aI1406 +aI1407 +aI1408 +aI1409 +aI1410 +aI1411 +aI1412 +aI1413 +aI1414 +aI1415 +aI1416 +aI1417 +aI1418 +aI1419 +aI1420 +aI1421 +aI1422 +aI1423 +aI1424 +aI1425 +aI1426 +aI1427 +aI1428 +aI1429 +aI1430 +aI1431 +aI1432 +aI1433 +aI1434 +aI1435 +aI1436 +aI1437 +aI1438 +aI1439 +aI1440 +aI1441 +aI1442 +aI1443 +aI1444 +aI1445 +aI1446 +aI1447 +aI1448 +aI1449 +aI1450 +aI1451 +aI1452 +aI1453 +aI1454 +aI1455 +aI1456 +aI1457 +aI1458 +aI1459 +aI1460 +aI1461 +aI1462 +aI1463 +aI1464 +aI1465 +aI1466 +aI1467 +aI1468 +aI1469 +aI1470 +aI1471 +aI1472 +aI1473 +aI1474 +aI1475 +aI1476 +aI1477 +aI1478 +aI1479 +aI1480 +aI1481 +aI1482 +aI1483 +aI1484 +aI1485 +aI1486 +aI1487 +aI1488 +aI1489 +aI1490 +aI1491 +aI1492 +aI1493 +aI1494 +aI1495 +aI1496 +aI1497 +aI1498 +aI1499 +aI1500 +aI1501 +aI1502 +aI1503 +aI1504 +aI1505 +aI1506 +aI1507 +aI1508 +aI1509 +aI1510 +aI1511 +aI1512 +aI1513 +aI1514 +aI1515 +aI1516 +aI1517 +aI1518 +aI1519 +aI1520 +aI1521 +aI1522 +aI1523 +aI1524 +aI1525 +aI1526 +aI1527 +aI1528 +aI1529 +aI1530 +aI1531 +aI1532 +aI1533 +aI1534 +aI1535 +aI1536 +aI1537 +aI1538 +aI1539 +aI1540 +aI1541 +aI1542 +aI1543 +aI1544 +aI1545 +aI1546 +aI1547 +aI1548 +aI1549 +aI1550 +aI1551 +aI1552 +aI1553 +aI1554 +aI1555 +aI1556 +aI1557 +aI1558 +aI1559 +aI1560 +aI1561 +aI1562 +aI1563 +aI1564 +aI1565 +aI1566 +aI1567 +aI1568 +aI1569 +aI1570 +aI1571 +aI1572 +aI1573 +aI1574 +aI1575 +aI1576 +aI1577 +aI1578 +aI1579 +aI1580 +aI1581 +aI1582 +aI1583 +aI1584 +aI1585 +aI1586 +aI1587 +aI1588 +aI1589 +aI1590 +aI1591 +aI1592 +aI1593 +aI1594 +aI1595 +aI1596 +aI1597 +aI1598 +aI1599 +aI1600 +aI1601 +aI1602 +aI1603 +aI1604 +aI1605 +aI1606 +aI1607 +aI1608 +aI1609 +aI1610 +aI1611 +aI1612 +aI1613 +aI1614 +aI1615 +aI1616 +aI1617 +aI1618 +aI1619 +aI1620 +aI1621 +aI1622 +aI1623 +aI1624 +aI1625 +aI1626 +aI1627 +aI1628 +aI1629 +aI1630 +aI1631 +aI1632 +aI1633 +aI1634 +aI1635 +aI1636 +aI1637 +aI1638 +aI1639 +aI1640 +aI1641 +aI1642 +aI1643 +aI1644 +aI1645 +aI1646 +aI1647 +aI1648 +aI1649 +aI1650 +aI1651 +aI1652 +aI1653 +aI1654 +aI1655 +aI1656 +aI1657 +aI1658 +aI1659 +aI1660 +aI1661 +aI1662 +aI1663 +aI1664 +aI1665 +aI1666 +aI1667 +aI1668 +aI1669 +aI1670 +aI1671 +aI1672 +aI1673 +aI1674 +aI1675 +aI1676 +aI1677 +aI1678 +aI1679 +aI1680 +aI1681 +aI1682 +aI1683 +aI1684 +aI1685 +aI1686 +aI1687 +aI1688 +aI1689 +aI1690 +aI1691 +aI1692 +aI1693 +aI1694 +aI1695 +aI1696 +aI1697 +aI1698 +aI1699 +aI1700 +aI1701 +aI1702 +aI1703 +aI1704 +aI1705 +aI1706 +aI1707 +aI1708 +aI1709 +aI1710 +aI1711 +aI1712 +aI1713 +aI1714 +aI1715 +aI1716 +aI1717 +aI1718 +aI1719 +aI1720 +aI1721 +aI1722 +aI1723 +aI1724 +aI1725 +aI1726 +aI1727 +aI1728 +aI1729 +aI1730 +aI1731 +aI1732 +aI1733 +aI1734 +aI1735 +aI1736 +aI1737 +aI1738 +aI1739 +aI1740 +aI1741 +aI1742 +aI1743 +aI1744 +aI1745 +aI1746 +aI1747 +aI1748 +aI1749 +aI1750 +aI1751 +aI1752 +aI1753 +aI1754 +aI1755 +aI1756 +aI1757 +aI1758 +aI1759 +aI1760 +aI1761 +aI1762 +aI1763 +aI1764 +aI1765 +aI1766 +aI1767 +aI1768 +aI1769 +aI1770 +aI1771 +aI1772 +aI1773 +aI1774 +aI1775 +aI1776 +aI1777 +aI1778 +aI1779 +aI1780 +aI1781 +aI1782 +aI1783 +aI1784 +aI1785 +aI1786 +aI1787 +aI1788 +aI1789 +aI1790 +aI1791 +aI1792 +aI1793 +aI1794 +aI1795 +aI1796 +aI1797 +aI1798 +aI1799 +aI1800 +aI1801 +aI1802 +aI1803 +aI1804 +aI1805 +aI1806 +aI1807 +aI1808 +aI1809 +aI1810 +aI1811 +aI1812 +aI1813 +aI1814 +aI1815 +aI1816 +aI1817 +aI1818 +aI1819 +aI1820 +aI1821 +aI1822 +aI1823 +aI1824 +aI1825 +aI1826 +aI1827 +aI1828 +aI1829 +aI1830 +aI1831 +aI1832 +aI1833 +aI1834 +aI1835 +aI1836 +aI1837 +aI1838 +aI1839 +aI1840 +aI1841 +aI1842 +aI1843 +aI1844 +aI1845 +aI1846 +aI1847 +aI1848 +aI1849 +aI1850 +aI1851 +aI1852 +aI1853 +aI1854 +aI1855 +aI1856 +aI1857 +aI1858 +aI1859 +aI1860 +aI1861 +aI1862 +aI1863 +aI1864 +aI1865 +aI1866 +aI1867 +aI1868 +aI1869 +aI1870 +aI1871 +aI1872 +aI1873 +aI1874 +aI1875 +aI1876 +aI1877 +aI1878 +aI1879 +aI1880 +aI1881 +aI1882 +aI1883 +aI1884 +aI1885 +aI1886 +aI1887 +aI1888 +aI1889 +aI1890 +aI1891 +aI1892 +aI1893 +aI1894 +aI1895 +aI1896 +aI1897 +aI1898 +aI1899 +aI1900 +aI1901 +aI1902 +aI1903 +aI1904 +aI1905 +aI1906 +aI1907 +aI1908 +aI1909 +aI1910 +aI1911 +aI1912 +aI1913 +aI1914 +aI1915 +aI1916 +aI1917 +aI1918 +aI1919 +aI1920 +aI1921 +aI1922 +aI1923 +aI1924 +aI1925 +aI1926 +aI1927 +aI1928 +aI1929 +aI1930 +aI1931 +aI1932 +aI1933 +aI1934 +aI1935 +aI1936 +aI1937 +aI1938 +aI1939 +aI1940 +aI1941 +aI1942 +aI1943 +aI1944 +aI1945 +aI1946 +aI1947 +aI1948 +aI1949 +aI1950 +aI1951 +aI1952 +aI1953 +aI1954 +aI1955 +aI1956 +aI1957 +aI1958 +aI1959 +aI1960 +aI1961 +aI1962 +aI1963 +aI1964 +aI1965 +aI1966 +aI1967 +aI1968 +aI1969 +aI1970 +aI1971 +aI1972 +aI1973 +aI1974 +aI1975 +aI1976 +aI1977 +aI1978 +aI1979 +aI1980 +aI1981 +aI1982 +aI1983 +aI1984 +aI1985 +aI1986 +aI1987 +aI1988 +aI1989 +aI1990 +aI1991 +aI1992 +aI1993 +aI1994 +aI1995 +aI1996 +aI1997 +aI1998 +aI1999 +aI2000 +aI2001 +aI2002 +aI2003 +aI2004 +aI2005 +aI2006 +aI2007 +aI2008 +aI2009 +aI2010 +aI2011 +aI2012 +aI2013 +aI2014 +aI2015 +aI2016 +aI2017 +aI2018 +aI2019 +aI2020 +aI2021 +aI2022 +aI2023 +aI2024 +aI2025 +aI2026 +aI2027 +aI2028 +aI2029 +aI2030 +aI2031 +aI2032 +aI2033 +aI2034 +aI2035 +aI2036 +aI2037 +aI2038 +aI2039 +aI2040 +aI2041 +aI2042 +aI2043 +aI2044 +aI2045 +aI2046 +aI2047 +aI2048 +aI2049 +aI2050 +aI2051 +aI2052 +aI2053 +aI2054 +aI2055 +aI2056 +aI2057 +aI2058 +aI2059 +aI2060 +aI2061 +aI2062 +aI2063 +aI2064 +aI2065 +aI2066 +aI2067 +aI2068 +aI2069 +aI2070 +aI2071 +aI2072 +aI2073 +aI2074 +aI2075 +aI2076 +aI2077 +aI2078 +aI2079 +aI2080 +aI2081 +aI2082 +aI2083 +aI2084 +aI2085 +aI2086 +aI2087 +aI2088 +aI2089 +aI2090 +aI2091 +aI2092 +aI2093 +aI2094 +aI2095 +aI2096 +aI2097 +aI2098 +aI2099 +aI2100 +aI2101 +aI2102 +aI2103 +aI2104 +aI2105 +aI2106 +aI2107 +aI2108 +aI2109 +aI2110 +aI2111 +aI2112 +aI2113 +aI2114 +aI2115 +aI2116 +aI2117 +aI2118 +aI2119 +aI2120 +aI2121 +aI2122 +aI2123 +aI2124 +aI2125 +aI2126 +aI2127 +aI2128 +aI2129 +aI2130 +aI2131 +aI2132 +aI2133 +aI2134 +aI2135 +aI2136 +aI2137 +aI2138 +aI2139 +aI2140 +aI2141 +aI2142 +aI2143 +aI2144 +aI2145 +aI2146 +aI2147 +aI2148 +aI2149 +aI2150 +aI2151 +aI2152 +aI2153 +aI2154 +aI2155 +aI2156 +aI2157 +aI2158 +aI2159 +aI2160 +aI2161 +aI2162 +aI2163 +aI2164 +aI2165 +aI2166 +aI2167 +aI2168 +aI2169 +aI2170 +aI2171 +aI2172 +aI2173 +aI2174 +aI2175 +aI2176 +aI2177 +aI2178 +aI2179 +aI2180 +aI2181 +aI2182 +aI2183 +aI2184 +aI2185 +aI2186 +aI2187 +aI2188 +aI2189 +aI2190 +aI2191 +aI2192 +aI2193 +aI2194 +aI2195 +aI2196 +aI2197 +aI2198 +aI2199 +aI2200 +aI2201 +aI2202 +aI2203 +aI2204 +aI2205 +aI2206 +aI2207 +aI2208 +aI2209 +aI2210 +aI2211 +aI2212 +aI2213 +aI2214 +aI2215 +aI2216 +aI2217 +aI2218 +aI2219 +aI2220 +aI2221 +aI2222 +aI2223 +aI2224 +aI2225 +aI2226 +aI2227 +aI2228 +aI2229 +aI2230 +aI2231 +aI2232 +aI2233 +aI2234 +aI2235 +aI2236 +aI2237 +aI2238 +aI2239 +aI2240 +aI2241 +aI2242 +aI2243 +aI2244 +aI2245 +aI2246 +aI2247 +aI2248 +aI2249 +aI2250 +aI2251 +aI2252 +aI2253 +aI2254 +aI2255 +aI2256 +aI2257 +aI2258 +aI2259 +aI2260 +aI2261 +aI2262 +aI2263 +aI2264 +aI2265 +aI2266 +aI2267 +aI2268 +aI2269 +aI2270 +aI2271 +aI2272 +aI2273 +aI2274 +aI2275 +aI2276 +aI2277 +aI2278 +aI2279 +aI2280 +aI2281 +aI2282 +aI2283 +aI2284 +aI2285 +aI2286 +aI2287 +aI2288 +aI2289 +aI2290 +aI2291 +aI2292 +aI2293 +aI2294 +aI2295 +aI2296 +aI2297 +aI2298 +aI2299 +aI2300 +aI2301 +aI2302 +aI2303 +aI2304 +aI2305 +aI2306 +aI2307 +aI2308 +aI2309 +aI2310 +aI2311 +aI2312 +aI2313 +aI2314 +aI2315 +aI2316 +aI2317 +aI2318 +aI2319 +aI2320 +aI2321 +aI2322 +aI2323 +aI2324 +aI2325 +aI2326 +aI2327 +aI2328 +aI2329 +aI2330 +aI2331 +aI2332 +aI2333 +aI2334 +aI2335 +aI2336 +aI2337 +aI2338 +aI2339 +aI2340 +aI2341 +aI2342 +aI2343 +aI2344 +aI2345 +aI2346 +aI2347 +aI2348 +aI2349 +aI2350 +aI2351 +aI2352 +aI2353 +aI2354 +aI2355 +aI2356 +aI2357 +aI2358 +aI2359 +aI2360 +aI2361 +aI2362 +aI2363 +aI2364 +aI2365 +aI2366 +aI2367 +aI2368 +aI2369 +aI2370 +aI2371 +aI2372 +aI2373 +aI2374 +aI2375 +aI2376 +aI2377 +aI2378 +aI2379 +aI2380 +aI2381 +aI2382 +aI2383 +aI2384 +aI2385 +aI2386 +aI2387 +aI2388 +aI2389 +aI2390 +aI2391 +aI2392 +aI2393 +aI2394 +aI2395 +aI2396 +aI2397 +aI2398 +aI2399 +aI2400 +aI2401 +aI2402 +aI2403 +aI2404 +aI2405 +aI2406 +aI2407 +aI2408 +aI2409 +aI2410 +aI2411 +aI2412 +aI2413 +aI2414 +aI2415 +aI2416 +aI2417 +aI2418 +aI2419 +aI2420 +aI2421 +aI2422 +aI2423 +aI2424 +aI2425 +aI2426 +aI2427 +aI2428 +aI2429 +aI2430 +aI2431 +aI2432 +aI2433 +aI2434 +aI2435 +aI2436 +aI2437 +aI2438 +aI2439 +aI2440 +aI2441 +aI2442 +aI2443 +aI2444 +aI2445 +aI2446 +aI2447 +aI2448 +aI2449 +aI2450 +aI2451 +aI2452 +aI2453 +aI2454 +aI2455 +aI2456 +aI2457 +aI2458 +aI2459 +aI2460 +aI2461 +aI2462 +aI2463 +aI2464 +aI2465 +aI2466 +aI2467 +aI2468 +aI2469 +aI2470 +aI2471 +aI2472 +aI2473 +aI2474 +aI2475 +aI2476 +aI2477 +aI2478 +aI2479 +aI2480 +aI2481 +aI2482 +aI2483 +aI2484 +aI2485 +aI2486 +aI2487 +aI2488 +aI2489 +aI2490 +aI2491 +aI2492 +aI2493 +aI2494 +aI2495 +aI2496 +aI2497 +aI2498 +aI2499 +aI2500 +aI2501 +aI2502 +aI2503 +aI2504 +aI2505 +aI2506 +aI2507 +aI2508 +aI2509 +aI2510 +aI2511 +aI2512 +aI2513 +aI2514 +aI2515 +aI2516 +aI2517 +aI2518 +aI2519 +aI2520 +aI2521 +aI2522 +aI2523 +aI2524 +aI2525 +aI2526 +aI2527 +aI2528 +aI2529 +aI2530 +aI2531 +aI2532 +aI2533 +aI2534 +aI2535 +aI2536 +aI2537 +aI2538 +aI2539 +aI2540 +aI2541 +aI2542 +aI2543 +aI2544 +aI2545 +aI2546 +aI2547 +aI2548 +aI2549 +aI2550 +aI2551 +aI2552 +aI2553 +aI2554 +aI2555 +aI2556 +aI2557 +aI2558 +aI2559 +aI2560 +aI2561 +aI2562 +aI2563 +aI2564 +aI2565 +aI2566 +aI2567 +aI2568 +aI2569 +aI2570 +aI2571 +aI2572 +aI2573 +aI2574 +aI2575 +aI2576 +aI2577 +aI2578 +aI2579 +aI2580 +aI2581 +aI2582 +aI2583 +aI2584 +aI2585 +aI2586 +aI2587 +aI2588 +aI2589 +aI2590 +aI2591 +aI2592 +aI2593 +aI2594 +aI2595 +aI2596 +aI2597 +aI2598 +aI2599 +aI2600 +aI2601 +aI2602 +aI2603 +aI2604 +aI2605 +aI2606 +aI2607 +aI2608 +aI2609 +aI2610 +aI2611 +aI2612 +aI2613 +aI2614 +aI2615 +aI2616 +aI2617 +aI2618 +aI2619 +aI2620 +aI2621 +aI2622 +aI2623 +aI2624 +aI2625 +aI2626 +aI2627 +aI2628 +aI2629 +aI2630 +aI2631 +aI2632 +aI2633 +aI2634 +aI2635 +aI2636 +aI2637 +aI2638 +aI2639 +aI2640 +aI2641 +aI2642 +aI2643 +aI2644 +aI2645 +aI2646 +aI2647 +aI2648 +aI2649 +aI2650 +aI2651 +aI2652 +aI2653 +aI2654 +aI2655 +aI2656 +aI2657 +aI2658 +aI2659 +aI2660 +aI2661 +aI2662 +aI2663 +aI2664 +aI2665 +aI2666 +aI2667 +aI2668 +aI2669 +aI2670 +aI2671 +aI2672 +aI2673 +aI2674 +aI2675 +aI2676 +aI2677 +aI2678 +aI2679 +aI2680 +aI2681 +aI2682 +aI2683 +aI2684 +aI2685 +aI2686 +aI2687 +aI2688 +aI2689 +aI2690 +aI2691 +aI2692 +aI2693 +aI2694 +aI2695 +aI2696 +aI2697 +aI2698 +aI2699 +aI2700 +aI2701 +aI2702 +aI2703 +aI2704 +aI2705 +aI2706 +aI2707 +aI2708 +aI2709 +aI2710 +aI2711 +aI2712 +aI2713 +aI2714 +aI2715 +aI2716 +aI2717 +aI2718 +aI2719 +aI2720 +aI2721 +aI2722 +aI2723 +aI2724 +aI2725 +aI2726 +aI2727 +aI2728 +aI2729 +aI2730 +aI2731 +aI2732 +aI2733 +aI2734 +aI2735 +aI2736 +aI2737 +aI2738 +aI2739 +aI2740 +aI2741 +aI2742 +aI2743 +aI2744 +aI2745 +aI2746 +aI2747 +aI2748 +aI2749 +aI2750 +aI2751 +aI2752 +aI2753 +aI2754 +aI2755 +aI2756 +aI2757 +aI2758 +aI2759 +aI2760 +aI2761 +aI2762 +aI2763 +aI2764 +aI2765 +aI2766 +aI2767 +aI2768 +aI2769 +aI2770 +aI2771 +aI2772 +aI2773 +aI2774 +aI2775 +aI2776 +aI2777 +aI2778 +aI2779 +aI2780 +aI2781 +aI2782 +aI2783 +aI2784 +aI2785 +aI2786 +aI2787 +aI2788 +aI2789 +aI2790 +aI2791 +aI2792 +aI2793 +aI2794 +aI2795 +aI2796 +aI2797 +aI2798 +aI2799 +aI2800 +aI2801 +aI2802 +aI2803 +aI2804 +aI2805 +aI2806 +aI2807 +aI2808 +aI2809 +aI2810 +aI2811 +aI2812 +aI2813 +aI2814 +aI2815 +aI2816 +aI2817 +aI2818 +aI2819 +aI2820 +aI2821 +aI2822 +aI2823 +aI2824 +aI2825 +aI2826 +aI2827 +aI2828 +aI2829 +aI2830 +aI2831 +aI2832 +aI2833 +aI2834 +aI2835 +aI2836 +aI2837 +aI2838 +aI2839 +aI2840 +aI2841 +aI2842 +aI2843 +aI2844 +aI2845 +aI2846 +aI2847 +aI2848 +aI2849 +aI2850 +aI2851 +aI2852 +aI2853 +aI2854 +aI2855 +aI2856 +aI2857 +aI2858 +aI2859 +aI2860 +aI2861 +aI2862 +aI2863 +aI2864 +aI2865 +aI2866 +aI2867 +aI2868 +aI2869 +aI2870 +aI2871 +aI2872 +aI2873 +aI2874 +aI2875 +aI2876 +aI2877 +aI2878 +aI2879 +aI2880 +aI2881 +aI2882 +aI2883 +aI2884 +aI2885 +aI2886 +aI2887 +aI2888 +aI2889 +aI2890 +aI2891 +aI2892 +aI2893 +aI2894 +aI2895 +aI2896 +aI2897 +aI2898 +aI2899 +aI2900 +aI2901 +aI2902 +aI2903 +aI2904 +aI2905 +aI2906 +aI2907 +aI2908 +aI2909 +aI2910 +aI2911 +aI2912 +aI2913 +aI2914 +aI2915 +aI2916 +aI2917 +aI2918 +aI2919 +aI2920 +aI2921 +aI2922 +aI2923 +aI2924 +aI2925 +aI2926 +aI2927 +aI2928 +aI2929 +aI2930 +aI2931 +aI2932 +aI2933 +aI2934 +aI2935 +aI2936 +aI2937 +aI2938 +aI2939 +aI2940 +aI2941 +aI2942 +aI2943 +aI2944 +aI2945 +aI2946 +aI2947 +aI2948 +aI2949 +aI2950 +aI2951 +aI2952 +aI2953 +aI2954 +aI2955 +aI2956 +aI2957 +aI2958 +aI2959 +aI2960 +aI2961 +aI2962 +aI2963 +aI2964 +aI2965 +aI2966 +aI2967 +aI2968 +aI2969 +aI2970 +aI2971 +aI2972 +aI2973 +aI2974 +aI2975 +aI2976 +aI2977 +aI2978 +aI2979 +aI2980 +aI2981 +aI2982 +aI2983 +aI2984 +aI2985 +aI2986 +aI2987 +aI2988 +aI2989 +aI2990 +aI2991 +aI2992 +aI2993 +aI2994 +aI2995 +aI2996 +aI2997 +aI2998 +aI2999 +aI3000 +aI3001 +aI3002 +aI3003 +aI3004 +aI3005 +aI3006 +aI3007 +aI3008 +aI3009 +aI3010 +aI3011 +aI3012 +aI3013 +aI3014 +aI3015 +aI3016 +aI3017 +aI3018 +aI3019 +aI3020 +aI3021 +aI3022 +aI3023 +aI3024 +aI3025 +aI3026 +aI3027 +aI3028 +aI3029 +aI3030 +aI3031 +aI3032 +aI3033 +aI3034 +aI3035 +aI3036 +aI3037 +aI3038 +aI3039 +aI3040 +aI3041 +aI3042 +aI3043 +aI3044 +aI3045 +aI3046 +aI3047 +aI3048 +aI3049 +aI3050 +aI3051 +aI3052 +aI3053 +aI3054 +aI3055 +aI3056 +aI3057 +aI3058 +aI3059 +aI3060 +aI3061 +aI3062 +aI3063 +aI3064 +aI3065 +aI3066 +aI3067 +aI3068 +aI3069 +aI3070 +aI3071 +aI3072 +aI3073 +aI3074 +aI3075 +aI3076 +aI3077 +aI3078 +aI3079 +aI3080 +aI3081 +aI3082 +aI3083 +aI3084 +aI3085 +aI3086 +aI3087 +aI3088 +aI3089 +aI3090 +aI3091 +aI3092 +aI3093 +aI3094 +aI3095 +aI3096 +aI3097 +aI3098 +aI3099 +aI3100 +aI3101 +aI3102 +aI3103 +aI3104 +aI3105 +aI3106 +aI3107 +aI3108 +aI3109 +aI3110 +aI3111 +aI3112 +aI3113 +aI3114 +aI3115 +aI3116 +aI3117 +aI3118 +aI3119 +aI3120 +aI3121 +aI3122 +aI3123 +aI3124 +aI3125 +aI3126 +aI3127 +aI3128 +aI3129 +aI3130 +aI3131 +aI3132 +aI3133 +aI3134 +aI3135 +aI3136 +aI3137 +aI3138 +aI3139 +aI3140 +aI3141 +aI3142 +aI3143 +aI3144 +aI3145 +aI3146 +aI3147 +aI3148 +aI3149 +aI3150 +aI3151 +aI3152 +aI3153 +aI3154 +aI3155 +aI3156 +aI3157 +aI3158 +aI3159 +aI3160 +aI3161 +aI3162 +aI3163 +aI3164 +aI3165 +aI3166 +aI3167 +aI3168 +aI3169 +aI3170 +aI3171 +aI3172 +aI3173 +aI3174 +aI3175 +aI3176 +aI3177 +aI3178 +aI3179 +aI3180 +aI3181 +aI3182 +aI3183 +aI3184 +aI3185 +aI3186 +aI3187 +aI3188 +aI3189 +aI3190 +aI3191 +aI3192 +aI3193 +aI3194 +aI3195 +aI3196 +aI3197 +aI3198 +aI3199 +aI3200 +aI3201 +aI3202 +aI3203 +aI3204 +aI3205 +aI3206 +aI3207 +aI3208 +aI3209 +aI3210 +aI3211 +aI3212 +aI3213 +aI3214 +aI3215 +aI3216 +aI3217 +aI3218 +aI3219 +aI3220 +aI3221 +aI3222 +aI3223 +aI3224 +aI3225 +aI3226 +aI3227 +aI3228 +aI3229 +aI3230 +aI3231 +aI3232 +aI3233 +aI3234 +aI3235 +aI3236 +aI3237 +aI3238 +aI3239 +aI3240 +aI3241 +aI3242 +aI3243 +aI3244 +aI3245 +aI3246 +aI3247 +aI3248 +aI3249 +aI3250 +aI3251 +aI3252 +aI3253 +aI3254 +aI3255 +aI3256 +aI3257 +aI3258 +aI3259 +aI3260 +aI3261 +aI3262 +aI3263 +aI3264 +aI3265 +aI3266 +aI3267 +aI3268 +aI3269 +aI3270 +aI3271 +aI3272 +aI3273 +aI3274 +aI3275 +aI3276 +aI3277 +aI3278 +aI3279 +aI3280 +aI3281 +aI3282 +aI3283 +aI3284 +aI3285 +aI3286 +aI3287 +aI3288 +aI3289 +aI3290 +aI3291 +aI3292 +aI3293 +aI3294 +aI3295 +aI3296 +aI3297 +aI3298 +aI3299 +aI3300 +aI3301 +aI3302 +aI3303 +aI3304 +aI3305 +aI3306 +aI3307 +aI3308 +aI3309 +aI3310 +aI3311 +aI3312 +aI3313 +aI3314 +aI3315 +aI3316 +aI3317 +aI3318 +aI3319 +aI3320 +aI3321 +aI3322 +aI3323 +aI3324 +aI3325 +aI3326 +aI3327 +aI3328 +aI3329 +aI3330 +aI3331 +aI3332 +aI3333 +aI3334 +aI3335 +aI3336 +aI3337 +aI3338 +aI3339 +aI3340 +aI3341 +aI3342 +aI3343 +aI3344 +aI3345 +aI3346 +aI3347 +aI3348 +aI3349 +aI3350 +aI3351 +aI3352 +aI3353 +aI3354 +aI3355 +aI3356 +aI3357 +aI3358 +aI3359 +aI3360 +aI3361 +aI3362 +aI3363 +aI3364 +aI3365 +aI3366 +aI3367 +aI3368 +aI3369 +aI3370 +aI3371 +aI3372 +aI3373 +aI3374 +aI3375 +aI3376 +aI3377 +aI3378 +aI3379 +aI3380 +aI3381 +aI3382 +aI3383 +aI3384 +aI3385 +aI3386 +aI3387 +aI3388 +aI3389 +aI3390 +aI3391 +aI3392 +aI3393 +aI3394 +aI3395 +aI3396 +aI3397 +aI3398 +aI3399 +aI3400 +aI3401 +aI3402 +aI3403 +aI3404 +aI3405 +aI3406 +aI3407 +aI3408 +aI3409 +aI3410 +aI3411 +aI3412 +aI3413 +aI3414 +aI3415 +aI3416 +aI3417 +aI3418 +aI3419 +aI3420 +aI3421 +aI3422 +aI3423 +aI3424 +aI3425 +aI3426 +aI3427 +aI3428 +aI3429 +aI3430 +aI3431 +aI3432 +aI3433 +aI3434 +aI3435 +aI3436 +aI3437 +aI3438 +aI3439 +aI3440 +aI3441 +aI3442 +aI3443 +aI3444 +aI3445 +aI3446 +aI3447 +aI3448 +aI3449 +aI3450 +aI3451 +aI3452 +aI3453 +aI3454 +aI3455 +aI3456 +aI3457 +aI3458 +aI3459 +aI3460 +aI3461 +aI3462 +aI3463 +aI3464 +aI3465 +aI3466 +aI3467 +aI3468 +aI3469 +aI3470 +aI3471 +aI3472 +aI3473 +aI3474 +aI3475 +aI3476 +aI3477 +aI3478 +aI3479 +aI3480 +aI3481 +aI3482 +aI3483 +aI3484 +aI3485 +aI3486 +aI3487 +aI3488 +aI3489 +aI3490 +aI3491 +aI3492 +aI3493 +aI3494 +aI3495 +aI3496 +aI3497 +aI3498 +aI3499 +aI3500 +aI3501 +aI3502 +aI3503 +aI3504 +aI3505 +aI3506 +aI3507 +aI3508 +aI3509 +aI3510 +aI3511 +aI3512 +aI3513 +aI3514 +aI3515 +aI3516 +aI3517 +aI3518 +aI3519 +aI3520 +aI3521 +aI3522 +aI3523 +aI3524 +aI3525 +aI3526 +aI3527 +aI3528 +aI3529 +aI3530 +aI3531 +aI3532 +aI3533 +aI3534 +aI3535 +aI3536 +aI3537 +aI3538 +aI3539 +aI3540 +aI3541 +aI3542 +aI3543 +aI3544 +aI3545 +aI3546 +aI3547 +aI3548 +aI3549 +aI3550 +aI3551 +aI3552 +aI3553 +aI3554 +aI3555 +aI3556 +aI3557 +aI3558 +aI3559 +aI3560 +aI3561 +aI3562 +aI3563 +aI3564 +aI3565 +aI3566 +aI3567 +aI3568 +aI3569 +aI3570 +aI3571 +aI3572 +aI3573 +aI3574 +aI3575 +aI3576 +aI3577 +aI3578 +aI3579 +aI3580 +aI3581 +aI3582 +aI3583 +aI3584 +aI3585 +aI3586 +aI3587 +aI3588 +aI3589 +aI3590 +aI3591 +aI3592 +aI3593 +aI3594 +aI3595 +aI3596 +aI3597 +aI3598 +aI3599 +aI3600 +aI3601 +aI3602 +aI3603 +aI3604 +aI3605 +aI3606 +aI3607 +aI3608 +aI3609 +aI3610 +aI3611 +aI3612 +aI3613 +aI3614 +aI3615 +aI3616 +aI3617 +aI3618 +aI3619 +aI3620 +aI3621 +aI3622 +aI3623 +aI3624 +aI3625 +aI3626 +aI3627 +aI3628 +aI3629 +aI3630 +aI3631 +aI3632 +aI3633 +aI3634 +aI3635 +aI3636 +aI3637 +aI3638 +aI3639 +aI3640 +aI3641 +aI3642 +aI3643 +aI3644 +aI3645 +aI3646 +aI3647 +aI3648 +aI3649 +aI3650 +aI3651 +aI3652 +aI3653 +aI3654 +aI3655 +aI3656 +aI3657 +aI3658 +aI3659 +aI3660 +aI3661 +aI3662 +aI3663 +aI3664 +aI3665 +aI3666 +aI3667 +aI3668 +aI3669 +aI3670 +aI3671 +aI3672 +aI3673 +aI3674 +aI3675 +aI3676 +aI3677 +aI3678 +aI3679 +aI3680 +aI3681 +aI3682 +aI3683 +aI3684 +aI3685 +aI3686 +aI3687 +aI3688 +aI3689 +aI3690 +aI3691 +aI3692 +aI3693 +aI3694 +aI3695 +aI3696 +aI3697 +aI3698 +aI3699 +aI3700 +aI3701 +aI3702 +aI3703 +aI3704 +aI3705 +aI3706 +aI3707 +aI3708 +aI3709 +aI3710 +aI3711 +aI3712 +aI3713 +aI3714 +aI3715 +aI3716 +aI3717 +aI3718 +aI3719 +aI3720 +aI3721 +aI3722 +aI3723 +aI3724 +aI3725 +aI3726 +aI3727 +aI3728 +aI3729 +aI3730 +aI3731 +aI3732 +aI3733 +aI3734 +aI3735 +aI3736 +aI3737 +aI3738 +aI3739 +aI3740 +aI3741 +aI3742 +aI3743 +aI3744 +aI3745 +aI3746 +aI3747 +aI3748 +aI3749 +aI3750 +aI3751 +aI3752 +aI3753 +aI3754 +aI3755 +aI3756 +aI3757 +aI3758 +aI3759 +aI3760 +aI3761 +aI3762 +aI3763 +aI3764 +aI3765 +aI3766 +aI3767 +aI3768 +aI3769 +aI3770 +aI3771 +aI3772 +aI3773 +aI3774 +aI3775 +aI3776 +aI3777 +aI3778 +aI3779 +aI3780 +aI3781 +aI3782 +aI3783 +aI3784 +aI3785 +aI3786 +aI3787 +aI3788 +aI3789 +aI3790 +aI3791 +aI3792 +aI3793 +aI3794 +aI3795 +aI3796 +aI3797 +aI3798 +aI3799 +aI3800 +aI3801 +aI3802 +aI3803 +aI3804 +aI3805 +aI3806 +aI3807 +aI3808 +aI3809 +aI3810 +aI3811 +aI3812 +aI3813 +aI3814 +aI3815 +aI3816 +aI3817 +aI3818 +aI3819 +aI3820 +aI3821 +aI3822 +aI3823 +aI3824 +aI3825 +aI3826 +aI3827 +aI3828 +aI3829 +aI3830 +aI3831 +aI3832 +aI3833 +aI3834 +aI3835 +aI3836 +aI3837 +aI3838 +aI3839 +aI3840 +aI3841 +aI3842 +aI3843 +aI3844 +aI3845 +aI3846 +aI3847 +aI3848 +aI3849 +aI3850 +aI3851 +aI3852 +aI3853 +aI3854 +aI3855 +aI3856 +aI3857 +aI3858 +aI3859 +aI3860 +aI3861 +aI3862 +aI3863 +aI3864 +aI3865 +aI3866 +aI3867 +aI3868 +aI3869 +aI3870 +aI3871 +aI3872 +aI3873 +aI3874 +aI3875 +aI3876 +aI3877 +aI3878 +aI3879 +aI3880 +aI3881 +aI3882 +aI3883 +aI3884 +aI3885 +aI3886 +aI3887 +aI3888 +aI3889 +aI3890 +aI3891 +aI3892 +aI3893 +aI3894 +aI3895 +aI3896 +aI3897 +aI3898 +aI3899 +aI3900 +aI3901 +aI3902 +aI3903 +aI3904 +aI3905 +aI3906 +aI3907 +aI3908 +aI3909 +aI3910 +aI3911 +aI3912 +aI3913 +aI3914 +aI3915 +aI3916 +aI3917 +aI3918 +aI3919 +aI3920 +aI3921 +aI3922 +aI3923 +aI3924 +aI3925 +aI3926 +aI3927 +aI3928 +aI3929 +aI3930 +aI3931 +aI3932 +aI3933 +aI3934 +aI3935 +aI3936 +aI3937 +aI3938 +aI3939 +aI3940 +aI3941 +aI3942 +aI3943 +aI3944 +aI3945 +aI3946 +aI3947 +aI3948 +aI3949 +aI3950 +aI3951 +aI3952 +aI3953 +aI3954 +aI3955 +aI3956 +aI3957 +aI3958 +aI3959 +aI3960 +aI3961 +aI3962 +aI3963 +aI3964 +aI3965 +aI3966 +aI3967 +aI3968 +aI3969 +aI3970 +aI3971 +aI3972 +aI3973 +aI3974 +aI3975 +aI3976 +aI3977 +aI3978 +aI3979 +aI3980 +aI3981 +aI3982 +aI3983 +aI3984 +aI3985 +aI3986 +aI3987 +aI3988 +aI3989 +aI3990 +aI3991 +aI3992 +aI3993 +aI3994 +aI3995 +aI3996 +aI3997 +aI3998 +aI3999 +aI4000 +aI4001 +aI4002 +aI4003 +aI4004 +aI4005 +aI4006 +aI4007 +aI4008 +aI4009 +aI4010 +aI4011 +aI4012 +aI4013 +aI4014 +aI4015 +aI4016 +aI4017 +aI4018 +aI4019 +aI4020 +aI4021 +aI4022 +aI4023 +aI4024 +aI4025 +aI4026 +aI4027 +aI4028 +aI4029 +aI4030 +aI4031 +aI4032 +aI4033 +aI4034 +aI4035 +aI4036 +aI4037 +aI4038 +aI4039 +aI4040 +aI4041 +aI4042 +aI4043 +aI4044 +aI4045 +aI4046 +aI4047 +aI4048 +aI4049 +aI4050 +aI4051 +aI4052 +aI4053 +aI4054 +aI4055 +aI4056 +aI4057 +aI4058 +aI4059 +aI4060 +aI4061 +aI4062 +aI4063 +aI4064 +aI4065 +aI4066 +aI4067 +aI4068 +aI4069 +aI4070 +aI4071 +aI4072 +aI4073 +aI4074 +aI4075 +aI4076 +aI4077 +aI4078 +aI4079 +aI4080 +aI4081 +aI4082 +aI4083 +aI4084 +aI4085 +aI4086 +aI4087 +aI4088 +aI4089 +aI4090 +aI4091 +aI4092 +aI4093 +aI4094 +aI4095 +aI4096 +aI4097 +aI4098 +aI4099 +aI4100 +aI4101 +aI4102 +aI4103 +aI4104 +aI4105 +aI4106 +aI4107 +aI4108 +aI4109 +aI4110 +aI4111 +aI4112 +aI4113 +aI4114 +aI4115 +aI4116 +aI4117 +aI4118 +aI4119 +aI4120 +aI4121 +aI4122 +aI4123 +aI4124 +aI4125 +aI4126 +aI4127 +aI4128 +aI4129 +aI4130 +aI4131 +aI4132 +aI4133 +aI4134 +aI4135 +aI4136 +aI4137 +aI4138 +aI4139 +aI4140 +aI4141 +aI4142 +aI4143 +aI4144 +aI4145 +aI4146 +aI4147 +aI4148 +aI4149 +aI4150 +aI4151 +aI4152 +aI4153 +aI4154 +aI4155 +aI4156 +aI4157 +aI4158 +aI4159 +aI4160 +aI4161 +aI4162 +aI4163 +aI4164 +aI4165 +aI4166 +aI4167 +aI4168 +aI4169 +aI4170 +aI4171 +aI4172 +aI4173 +aI4174 +aI4175 +aI4176 +aI4177 +aI4178 +aI4179 +aI4180 +aI4181 +aI4182 +aI4183 +aI4184 +aI4185 +aI4186 +aI4187 +aI4188 +aI4189 +aI4190 +aI4191 +aI4192 +aI4193 +aI4194 +aI4195 +aI4196 +aI4197 +aI4198 +aI4199 +aI4200 +aI4201 +aI4202 +aI4203 +aI4204 +aI4205 +aI4206 +aI4207 +aI4208 +aI4209 +aI4210 +aI4211 +aI4212 +aI4213 +aI4214 +aI4215 +aI4216 +aI4217 +aI4218 +aI4219 +aI4220 +aI4221 +aI4222 +aI4223 +aI4224 +aI4225 +aI4226 +aI4227 +aI4228 +aI4229 +aI4230 +aI4231 +aI4232 +aI4233 +aI4234 +aI4235 +aI4236 +aI4237 +aI4238 +aI4239 +aI4240 +aI4241 +aI4242 +aI4243 +aI4244 +aI4245 +aI4246 +aI4247 +aI4248 +aI4249 +aI4250 +aI4251 +aI4252 +aI4253 +aI4254 +aI4255 +aI4256 +aI4257 +aI4258 +aI4259 +aI4260 +aI4261 +aI4262 +aI4263 +aI4264 +aI4265 +aI4266 +aI4267 +aI4268 +aI4269 +aI4270 +aI4271 +aI4272 +aI4273 +aI4274 +aI4275 +aI4276 +aI4277 +aI4278 +aI4279 +aI4280 +aI4281 +aI4282 +aI4283 +aI4284 +aI4285 +aI4286 +aI4287 +aI4288 +aI4289 +aI4290 +aI4291 +aI4292 +aI4293 +aI4294 +aI4295 +aI4296 +aI4297 +aI4298 +aI4299 +aI4300 +aI4301 +aI4302 +aI4303 +aI4304 +aI4305 +aI4306 +aI4307 +aI4308 +aI4309 +aI4310 +aI4311 +aI4312 +aI4313 +aI4314 +aI4315 +aI4316 +aI4317 +aI4318 +aI4319 +aI4320 +aI4321 +aI4322 +aI4323 +aI4324 +aI4325 +aI4326 +aI4327 +aI4328 +aI4329 +aI4330 +aI4331 +aI4332 +aI4333 +aI4334 +aI4335 +aI4336 +aI4337 +aI4338 +aI4339 +aI4340 +aI4341 +aI4342 +aI4343 +aI4344 +aI4345 +aI4346 +aI4347 +aI4348 +aI4349 +aI4350 +aI4351 +aI4352 +aI4353 +aI4354 +aI4355 +aI4356 +aI4357 +aI4358 +aI4359 +aI4360 +aI4361 +aI4362 +aI4363 +aI4364 +aI4365 +aI4366 +aI4367 +aI4368 +aI4369 +aI4370 +aI4371 +aI4372 +aI4373 +aI4374 +aI4375 +aI4376 +aI4377 +aI4378 +aI4379 +aI4380 +aI4381 +aI4382 +aI4383 +aI4384 +aI4385 +aI4386 +aI4387 +aI4388 +aI4389 +aI4390 +aI4391 +aI4392 +aI4393 +aI4394 +aI4395 +aI4396 +aI4397 +aI4398 +aI4399 +aI4400 +aI4401 +aI4402 +aI4403 +aI4404 +aI4405 +aI4406 +aI4407 +aI4408 +aI4409 +aI4410 +aI4411 +aI4412 +aI4413 +aI4414 +aI4415 +aI4416 +aI4417 +aI4418 +aI4419 +aI4420 +aI4421 +aI4422 +aI4423 +aI4424 +aI4425 +aI4426 +aI4427 +aI4428 +aI4429 +aI4430 +aI4431 +aI4432 +aI4433 +aI4434 +aI4435 +aI4436 +aI4437 +aI4438 +aI4439 +aI4440 +aI4441 +aI4442 +aI4443 +aI4444 +aI4445 +aI4446 +aI4447 +aI4448 +aI4449 +aI4450 +aI4451 +aI4452 +aI4453 +aI4454 +aI4455 +aI4456 +aI4457 +aI4458 +aI4459 +aI4460 +aI4461 +aI4462 +aI4463 +aI4464 +aI4465 +aI4466 +aI4467 +aI4468 +aI4469 +aI4470 +aI4471 +aI4472 +aI4473 +aI4474 +aI4475 +aI4476 +aI4477 +aI4478 +aI4479 +aI4480 +aI4481 +aI4482 +aI4483 +aI4484 +aI4485 +aI4486 +aI4487 +aI4488 +aI4489 +aI4490 +aI4491 +aI4492 +aI4493 +aI4494 +aI4495 +aI4496 +aI4497 +aI4498 +aI4499 +aI4500 +aI4501 +aI4502 +aI4503 +aI4504 +aI4505 +aI4506 +aI4507 +aI4508 +aI4509 +aI4510 +aI4511 +aI4512 +aI4513 +aI4514 +aI4515 +aI4516 +aI4517 +aI4518 +aI4519 +aI4520 +aI4521 +aI4522 +aI4523 +aI4524 +aI4525 +aI4526 +aI4527 +aI4528 +aI4529 +aI4530 +aI4531 +aI4532 +aI4533 +aI4534 +aI4535 +aI4536 +aI4537 +aI4538 +aI4539 +aI4540 +aI4541 +aI4542 +aI4543 +aI4544 +aI4545 +aI4546 +aI4547 +aI4548 +aI4549 +aI4550 +aI4551 +aI4552 +aI4553 +aI4554 +aI4555 +aI4556 +aI4557 +aI4558 +aI4559 +aI4560 +aI4561 +aI4562 +aI4563 +aI4564 +aI4565 +aI4566 +aI4567 +aI4568 +aI4569 +aI4570 +aI4571 +aI4572 +aI4573 +aI4574 +aI4575 +aI4576 +aI4577 +aI4578 +aI4579 +aI4580 +aI4581 +aI4582 +aI4583 +aI4584 +aI4585 +aI4586 +aI4587 +aI4588 +aI4589 +aI4590 +aI4591 +aI4592 +aI4593 +aI4594 +aI4595 +aI4596 +aI4597 +aI4598 +aI4599 +aI4600 +aI4601 +aI4602 +aI4603 +aI4604 +aI4605 +aI4606 +aI4607 +aI4608 +aI4609 +aI4610 +aI4611 +aI4612 +aI4613 +aI4614 +aI4615 +aI4616 +aI4617 +aI4618 +aI4619 +aI4620 +aI4621 +aI4622 +aI4623 +aI4624 +aI4625 +aI4626 +aI4627 +aI4628 +aI4629 +aI4630 +aI4631 +aI4632 +aI4633 +aI4634 +aI4635 +aI4636 +aI4637 +aI4638 +aI4639 +aI4640 +aI4641 +aI4642 +aI4643 +aI4644 +aI4645 +aI4646 +aI4647 +aI4648 +aI4649 +aI4650 +aI4651 +aI4652 +aI4653 +aI4654 +aI4655 +aI4656 +aI4657 +aI4658 +aI4659 +aI4660 +aI4661 +aI4662 +aI4663 +aI4664 +aI4665 +aI4666 +aI4667 +aI4668 +aI4669 +aI4670 +aI4671 +aI4672 +aI4673 +aI4674 +aI4675 +aI4676 +aI4677 +aI4678 +aI4679 +aI4680 +aI4681 +aI4682 +aI4683 +aI4684 +aI4685 +aI4686 +aI4687 +aI4688 +aI4689 +aI4690 +aI4691 +aI4692 +aI4693 +aI4694 +aI4695 +aI4696 +aI4697 +aI4698 +aI4699 +aI4700 +aI4701 +aI4702 +aI4703 +aI4704 +aI4705 +aI4706 +aI4707 +aI4708 +aI4709 +aI4710 +aI4711 +aI4712 +aI4713 +aI4714 +aI4715 +aI4716 +aI4717 +aI4718 +aI4719 +aI4720 +aI4721 +aI4722 +aI4723 +aI4724 +aI4725 +aI4726 +aI4727 +aI4728 +aI4729 +aI4730 +aI4731 +aI4732 +aI4733 +aI4734 +aI4735 +aI4736 +aI4737 +aI4738 +aI4739 +aI4740 +aI4741 +aI4742 +aI4743 +aI4744 +aI4745 +aI4746 +aI4747 +aI4748 +aI4749 +aI4750 +aI4751 +aI4752 +aI4753 +aI4754 +aI4755 +aI4756 +aI4757 +aI4758 +aI4759 +aI4760 +aI4761 +aI4762 +aI4763 +aI4764 +aI4765 +aI4766 +aI4767 +aI4768 +aI4769 +aI4770 +aI4771 +aI4772 +aI4773 +aI4774 +aI4775 +aI4776 +aI4777 +aI4778 +aI4779 +aI4780 +aI4781 +aI4782 +aI4783 +aI4784 +aI4785 +aI4786 +aI4787 +aI4788 +aI4789 +aI4790 +aI4791 +aI4792 +aI4793 +aI4794 +aI4795 +aI4796 +aI4797 +aI4798 +aI4799 +aI4800 +aI4801 +aI4802 +aI4803 +aI4804 +aI4805 +aI4806 +aI4807 +aI4808 +aI4809 +aI4810 +aI4811 +aI4812 +aI4813 +aI4814 +aI4815 +aI4816 +aI4817 +aI4818 +aI4819 +aI4820 +aI4821 +aI4822 +aI4823 +aI4824 +aI4825 +aI4826 +aI4827 +aI4828 +aI4829 +aI4830 +aI4831 +aI4832 +aI4833 +aI4834 +aI4835 +aI4836 +aI4837 +aI4838 +aI4839 +aI4840 +aI4841 +aI4842 +aI4843 +aI4844 +aI4845 +aI4846 +aI4847 +aI4848 +aI4849 +aI4850 +aI4851 +aI4852 +aI4853 +aI4854 +aI4855 +aI4856 +aI4857 +aI4858 +aI4859 +aI4860 +aI4861 +aI4862 +aI4863 +aI4864 +aI4865 +aI4866 +aI4867 +aI4868 +aI4869 +aI4870 +aI4871 +aI4872 +aI4873 +aI4874 +aI4875 +aI4876 +aI4877 +aI4878 +aI4879 +aI4880 +aI4881 +aI4882 +aI4883 +aI4884 +aI4885 +aI4886 +aI4887 +aI4888 +aI4889 +aI4890 +aI4891 +aI4892 +aI4893 +aI4894 +aI4895 +aI4896 +aI4897 +aI4898 +aI4899 +aI4900 +aI4901 +aI4902 +aI4903 +aI4904 +aI4905 +aI4906 +aI4907 +aI4908 +aI4909 +aI4910 +aI4911 +aI4912 +aI4913 +aI4914 +aI4915 +aI4916 +aI4917 +aI4918 +aI4919 +aI4920 +aI4921 +aI4922 +aI4923 +aI4924 +aI4925 +aI4926 +aI4927 +aI4928 +aI4929 +aI4930 +aI4931 +aI4932 +aI4933 +aI4934 +aI4935 +aI4936 +aI4937 +aI4938 +aI4939 +aI4940 +aI4941 +aI4942 +aI4943 +aI4944 +aI4945 +aI4946 +aI4947 +aI4948 +aI4949 +aI4950 +aI4951 +aI4952 +aI4953 +aI4954 +aI4955 +aI4956 +aI4957 +aI4958 +aI4959 +aI4960 +aI4961 +aI4962 +aI4963 +aI4964 +aI4965 +aI4966 +aI4967 +aI4968 +aI4969 +aI4970 +aI4971 +aI4972 +aI4973 +aI4974 +aI4975 +aI4976 +aI4977 +aI4978 +aI4979 +aI4980 +aI4981 +aI4982 +aI4983 +aI4984 +aI4985 +aI4986 +aI4987 +aI4988 +aI4989 +aI4990 +aI4991 +aI4992 +aI4993 +aI4994 +aI4995 +aI4996 +aI4997 +aI4998 +aI4999 +aI5000 +aI5001 +aI5002 +aI5003 +aI5004 +aI5005 +aI5006 +aI5007 +aI5008 +aI5009 +aI5010 +aI5011 +aI5012 +aI5013 +aI5014 +aI5015 +aI5016 +aI5017 +aI5018 +aI5019 +aI5020 +aI5021 +aI5022 +aI5023 +aI5024 +aI5025 +aI5026 +aI5027 +aI5028 +aI5029 +aI5030 +aI5031 +aI5032 +aI5033 +aI5034 +aI5035 +aI5036 +aI5037 +aI5038 +aI5039 +aI5040 +aI5041 +aI5042 +aI5043 +aI5044 +aI5045 +aI5046 +aI5047 +aI5048 +aI5049 +aI5050 +aI5051 +aI5052 +aI5053 +aI5054 +aI5055 +aI5056 +aI5057 +aI5058 +aI5059 +aI5060 +aI5061 +aI5062 +aI5063 +aI5064 +aI5065 +aI5066 +aI5067 +aI5068 +aI5069 +aI5070 +aI5071 +aI5072 +aI5073 +aI5074 +aI5075 +aI5076 +aI5077 +aI5078 +aI5079 +aI5080 +aI5081 +aI5082 +aI5083 +aI5084 +aI5085 +aI5086 +aI5087 +aI5088 +aI5089 +aI5090 +aI5091 +aI5092 +aI5093 +aI5094 +aI5095 +aI5096 +aI5097 +aI5098 +aI5099 +aI5100 +aI5101 +aI5102 +aI5103 +aI5104 +aI5105 +aI5106 +aI5107 +aI5108 +aI5109 +aI5110 +aI5111 +aI5112 +aI5113 +aI5114 +aI5115 +aI5116 +aI5117 +aI5118 +aI5119 +aI5120 +aI5121 +aI5122 +aI5123 +aI5124 +aI5125 +aI5126 +aI5127 +aI5128 +aI5129 +aI5130 +aI5131 +aI5132 +aI5133 +aI5134 +aI5135 +aI5136 +aI5137 +aI5138 +aI5139 +aI5140 +aI5141 +aI5142 +aI5143 +aI5144 +aI5145 +aI5146 +aI5147 +aI5148 +aI5149 +aI5150 +aI5151 +aI5152 +aI5153 +aI5154 +aI5155 +aI5156 +aI5157 +aI5158 +aI5159 +aI5160 +aI5161 +aI5162 +aI5163 +aI5164 +aI5165 +aI5166 +aI5167 +aI5168 +aI5169 +aI5170 +aI5171 +aI5172 +aI5173 +aI5174 +aI5175 +aI5176 +aI5177 +aI5178 +aI5179 +aI5180 +aI5181 +aI5182 +aI5183 +aI5184 +aI5185 +aI5186 +aI5187 +aI5188 +aI5189 +aI5190 +aI5191 +aI5192 +aI5193 +aI5194 +aI5195 +aI5196 +aI5197 +aI5198 +aI5199 +aI5200 +aI5201 +aI5202 +aI5203 +aI5204 +aI5205 +aI5206 +aI5207 +aI5208 +aI5209 +aI5210 +aI5211 +aI5212 +aI5213 +aI5214 +aI5215 +aI5216 +aI5217 +aI5218 +aI5219 +aI5220 +aI5221 +aI5222 +aI5223 +aI5224 +aI5225 +aI5226 +aI5227 +aI5228 +aI5229 +aI5230 +aI5231 +aI5232 +aI5233 +aI5234 +aI5235 +aI5236 +aI5237 +aI5238 +aI5239 +aI5240 +aI5241 +aI5242 +aI5243 +aI5244 +aI5245 +aI5246 +aI5247 +aI5248 +aI5249 +aI5250 +aI5251 +aI5252 +aI5253 +aI5254 +aI5255 +aI5256 +aI5257 +aI5258 +aI5259 +aI5260 +aI5261 +aI5262 +aI5263 +aI5264 +aI5265 +aI5266 +aI5267 +aI5268 +aI5269 +aI5270 +aI5271 +aI5272 +aI5273 +aI5274 +aI5275 +aI5276 +aI5277 +aI5278 +aI5279 +aI5280 +aI5281 +aI5282 +aI5283 +aI5284 +aI5285 +aI5286 +aI5287 +aI5288 +aI5289 +aI5290 +aI5291 +aI5292 +aI5293 +aI5294 +aI5295 +aI5296 +aI5297 +aI5298 +aI5299 +aI5300 +aI5301 +aI5302 +aI5303 +aI5304 +aI5305 +aI5306 +aI5307 +aI5308 +aI5309 +aI5310 +aI5311 +aI5312 +aI5313 +aI5314 +aI5315 +aI5316 +aI5317 +aI5318 +aI5319 +aI5320 +aI5321 +aI5322 +aI5323 +aI5324 +aI5325 +aI5326 +aI5327 +aI5328 +aI5329 +aI5330 +aI5331 +aI5332 +aI5333 +aI5334 +aI5335 +aI5336 +aI5337 +aI5338 +aI5339 +aI5340 +aI5341 +aI5342 +aI5343 +aI5344 +aI5345 +aI5346 +aI5347 +aI5348 +aI5349 +aI5350 +aI5351 +aI5352 +aI5353 +aI5354 +aI5355 +aI5356 +aI5357 +aI5358 +aI5359 +aI5360 +aI5361 +aI5362 +aI5363 +aI5364 +aI5365 +aI5366 +aI5367 +aI5368 +aI5369 +aI5370 +aI5371 +aI5372 +aI5373 +aI5374 +aI5375 +aI5376 +aI5377 +aI5378 +aI5379 +aI5380 +aI5381 +aI5382 +aI5383 +aI5384 +aI5385 +aI5386 +aI5387 +aI5388 +aI5389 +aI5390 +aI5391 +aI5392 +aI5393 +aI5394 +aI5395 +aI5396 +aI5397 +aI5398 +aI5399 +aI5400 +aI5401 +aI5402 +aI5403 +aI5404 +aI5405 +aI5406 +aI5407 +aI5408 +aI5409 +aI5410 +aI5411 +aI5412 +aI5413 +aI5414 +aI5415 +aI5416 +aI5417 +aI5418 +aI5419 +aI5420 +aI5421 +aI5422 +aI5423 +aI5424 +aI5425 +aI5426 +aI5427 +aI5428 +aI5429 +aI5430 +aI5431 +aI5432 +aI5433 +aI5434 +aI5435 +aI5436 +aI5437 +aI5438 +aI5439 +aI5440 +aI5441 +aI5442 +aI5443 +aI5444 +aI5445 +aI5446 +aI5447 +aI5448 +aI5449 +aI5450 +aI5451 +aI5452 +aI5453 +aI5454 +aI5455 +aI5456 +aI5457 +aI5458 +aI5459 +aI5460 +aI5461 +aI5462 +aI5463 +aI5464 +aI5465 +aI5466 +aI5467 +aI5468 +aI5469 +aI5470 +aI5471 +aI5472 +aI5473 +aI5474 +aI5475 +aI5476 +aI5477 +aI5478 +aI5479 +aI5480 +aI5481 +aI5482 +aI5483 +aI5484 +aI5485 +aI5486 +aI5487 +aI5488 +aI5489 +aI5490 +aI5491 +aI5492 +aI5493 +aI5494 +aI5495 +aI5496 +aI5497 +aI5498 +aI5499 +aI5500 +aI5501 +aI5502 +aI5503 +aI5504 +aI5505 +aI5506 +aI5507 +aI5508 +aI5509 +aI5510 +aI5511 +aI5512 +aI5513 +aI5514 +aI5515 +aI5516 +aI5517 +aI5518 +aI5519 +aI5520 +aI5521 +aI5522 +aI5523 +aI5524 +aI5525 +aI5526 +aI5527 +aI5528 +aI5529 +aI5530 +aI5531 +aI5532 +aI5533 +aI5534 +aI5535 +aI5536 +aI5537 +aI5538 +aI5539 +aI5540 +aI5541 +aI5542 +aI5543 +aI5544 +aI5545 +aI5546 +aI5547 +aI5548 +aI5549 +aI5550 +aI5551 +aI5552 +aI5553 +aI5554 +aI5555 +aI5556 +aI5557 +aI5558 +aI5559 +aI5560 +aI5561 +aI5562 +aI5563 +aI5564 +aI5565 +aI5566 +aI5567 +aI5568 +aI5569 +aI5570 +aI5571 +aI5572 +aI5573 +aI5574 +aI5575 +aI5576 +aI5577 +aI5578 +aI5579 +aI5580 +aI5581 +aI5582 +aI5583 +aI5584 +aI5585 +aI5586 +aI5587 +aI5588 +aI5589 +aI5590 +aI5591 +aI5592 +aI5593 +aI5594 +aI5595 +aI5596 +aI5597 +aI5598 +aI5599 +aI5600 +aI5601 +aI5602 +aI5603 +aI5604 +aI5605 +aI5606 +aI5607 +aI5608 +aI5609 +aI5610 +aI5611 +aI5612 +aI5613 +aI5614 +aI5615 +aI5616 +aI5617 +aI5618 +aI5619 +aI5620 +aI5621 +aI5622 +aI5623 +aI5624 +aI5625 +aI5626 +aI5627 +aI5628 +aI5629 +aI5630 +aI5631 +aI5632 +aI5633 +aI5634 +aI5635 +aI5636 +aI5637 +aI5638 +aI5639 +aI5640 +aI5641 +aI5642 +aI5643 +aI5644 +aI5645 +aI5646 +aI5647 +aI5648 +aI5649 +aI5650 +aI5651 +aI5652 +aI5653 +aI5654 +aI5655 +aI5656 +aI5657 +aI5658 +aI5659 +aI5660 +aI5661 +aI5662 +aI5663 +aI5664 +aI5665 +aI5666 +aI5667 +aI5668 +aI5669 +aI5670 +aI5671 +aI5672 +aI5673 +aI5674 +aI5675 +aI5676 +aI5677 +aI5678 +aI5679 +aI5680 +aI5681 +aI5682 +aI5683 +aI5684 +aI5685 +aI5686 +aI5687 +aI5688 +aI5689 +aI5690 +aI5691 +aI5692 +aI5693 +aI5694 +aI5695 +aI5696 +aI5697 +aI5698 +aI5699 +aI5700 +aI5701 +aI5702 +aI5703 +aI5704 +aI5705 +aI5706 +aI5707 +aI5708 +aI5709 +aI5710 +aI5711 +aI5712 +aI5713 +aI5714 +aI5715 +aI5716 +aI5717 +aI5718 +aI5719 +aI5720 +aI5721 +aI5722 +aI5723 +aI5724 +aI5725 +aI5726 +aI5727 +aI5728 +aI5729 +aI5730 +aI5731 +aI5732 +aI5733 +aI5734 +aI5735 +aI5736 +aI5737 +aI5738 +aI5739 +aI5740 +aI5741 +aI5742 +aI5743 +aI5744 +aI5745 +aI5746 +aI5747 +aI5748 +aI5749 +aI5750 +aI5751 +aI5752 +aI5753 +aI5754 +aI5755 +aI5756 +aI5757 +aI5758 +aI5759 +aI5760 +aI5761 +aI5762 +aI5763 +aI5764 +aI5765 +aI5766 +aI5767 +aI5768 +aI5769 +aI5770 +aI5771 +aI5772 +aI5773 +aI5774 +aI5775 +aI5776 +aI5777 +aI5778 +aI5779 +aI5780 +aI5781 +aI5782 +aI5783 +aI5784 +aI5785 +aI5786 +aI5787 +aI5788 +aI5789 +aI5790 +aI5791 +aI5792 +aI5793 +aI5794 +aI5795 +aI5796 +aI5797 +aI5798 +aI5799 +aI5800 +aI5801 +aI5802 +aI5803 +aI5804 +aI5805 +aI5806 +aI5807 +aI5808 +aI5809 +aI5810 +aI5811 +aI5812 +aI5813 +aI5814 +aI5815 +aI5816 +aI5817 +aI5818 +aI5819 +aI5820 +aI5821 +aI5822 +aI5823 +aI5824 +aI5825 +aI5826 +aI5827 +aI5828 +aI5829 +aI5830 +aI5831 +aI5832 +aI5833 +aI5834 +aI5835 +aI5836 +aI5837 +aI5838 +aI5839 +aI5840 +aI5841 +aI5842 +aI5843 +aI5844 +aI5845 +aI5846 +aI5847 +aI5848 +aI5849 +aI5850 +aI5851 +aI5852 +aI5853 +aI5854 +aI5855 +aI5856 +aI5857 +aI5858 +aI5859 +aI5860 +aI5861 +aI5862 +aI5863 +aI5864 +aI5865 +aI5866 +aI5867 +aI5868 +aI5869 +aI5870 +aI5871 +aI5872 +aI5873 +aI5874 +aI5875 +aI5876 +aI5877 +aI5878 +aI5879 +aI5880 +aI5881 +aI5882 +aI5883 +aI5884 +aI5885 +aI5886 +aI5887 +aI5888 +aI5889 +aI5890 +aI5891 +aI5892 +aI5893 +aI5894 +aI5895 +aI5896 +aI5897 +aI5898 +aI5899 +aI5900 +aI5901 +aI5902 +aI5903 +aI5904 +aI5905 +aI5906 +aI5907 +aI5908 +aI5909 +aI5910 +aI5911 +aI5912 +aI5913 +aI5914 +aI5915 +aI5916 +aI5917 +aI5918 +aI5919 +aI5920 +aI5921 +aI5922 +aI5923 +aI5924 +aI5925 +aI5926 +aI5927 +aI5928 +aI5929 +aI5930 +aI5931 +aI5932 +aI5933 +aI5934 +aI5935 +aI5936 +aI5937 +aI5938 +aI5939 +aI5940 +aI5941 +aI5942 +aI5943 +aI5944 +aI5945 +aI5946 +aI5947 +aI5948 +aI5949 +aI5950 +aI5951 +aI5952 +aI5953 +aI5954 +aI5955 +aI5956 +aI5957 +aI5958 +aI5959 +aI5960 +aI5961 +aI5962 +aI5963 +aI5964 +aI5965 +aI5966 +aI5967 +aI5968 +aI5969 +aI5970 +aI5971 +aI5972 +aI5973 +aI5974 +aI5975 +aI5976 +aI5977 +aI5978 +aI5979 +aI5980 +aI5981 +aI5982 +aI5983 +aI5984 +aI5985 +aI5986 +aI5987 +aI5988 +aI5989 +aI5990 +aI5991 +aI5992 +aI5993 +aI5994 +aI5995 +aI5996 +aI5997 +aI5998 +aI5999 +aI6000 +aI6001 +aI6002 +aI6003 +aI6004 +aI6005 +aI6006 +aI6007 +aI6008 +aI6009 +aI6010 +aI6011 +aI6012 +aI6013 +aI6014 +aI6015 +aI6016 +aI6017 +aI6018 +aI6019 +aI6020 +aI6021 +aI6022 +aI6023 +aI6024 +aI6025 +aI6026 +aI6027 +aI6028 +aI6029 +aI6030 +aI6031 +aI6032 +aI6033 +aI6034 +aI6035 +aI6036 +aI6037 +aI6038 +aI6039 +aI6040 +aI6041 +aI6042 +aI6043 +aI6044 +aI6045 +aI6046 +aI6047 +aI6048 +aI6049 +aI6050 +aI6051 +aI6052 +aI6053 +aI6054 +aI6055 +aI6056 +aI6057 +aI6058 +aI6059 +aI6060 +aI6061 +aI6062 +aI6063 +aI6064 +aI6065 +aI6066 +aI6067 +aI6068 +aI6069 +aI6070 +aI6071 +aI6072 +aI6073 +aI6074 +aI6075 +aI6076 +aI6077 +aI6078 +aI6079 +aI6080 +aI6081 +aI6082 +aI6083 +aI6084 +aI6085 +aI6086 +aI6087 +aI6088 +aI6089 +aI6090 +aI6091 +aI6092 +aI6093 +aI6094 +aI6095 +aI6096 +aI6097 +aI6098 +aI6099 +aI6100 +aI6101 +aI6102 +aI6103 +aI6104 +aI6105 +aI6106 +aI6107 +aI6108 +aI6109 +aI6110 +aI6111 +aI6112 +aI6113 +aI6114 +aI6115 +aI6116 +aI6117 +aI6118 +aI6119 +aI6120 +aI6121 +aI6122 +aI6123 +aI6124 +aI6125 +aI6126 +aI6127 +aI6128 +aI6129 +aI6130 +aI6131 +aI6132 +aI6133 +aI6134 +aI6135 +aI6136 +aI6137 +aI6138 +aI6139 +aI6140 +aI6141 +aI6142 +aI6143 +aI6144 +aI6145 +aI6146 +aI6147 +aI6148 +aI6149 +aI6150 +aI6151 +aI6152 +aI6153 +aI6154 +aI6155 +aI6156 +aI6157 +aI6158 +aI6159 +aI6160 +aI6161 +aI6162 +aI6163 +aI6164 +aI6165 +aI6166 +aI6167 +aI6168 +aI6169 +aI6170 +aI6171 +aI6172 +aI6173 +aI6174 +aI6175 +aI6176 +aI6177 +aI6178 +aI6179 +aI6180 +aI6181 +aI6182 +aI6183 +aI6184 +aI6185 +aI6186 +aI6187 +aI6188 +aI6189 +aI6190 +aI6191 +aI6192 +aI6193 +aI6194 +aI6195 +aI6196 +aI6197 +aI6198 +aI6199 +aI6200 +aI6201 +aI6202 +aI6203 +aI6204 +aI6205 +aI6206 +aI6207 +aI6208 +aI6209 +aI6210 +aI6211 +aI6212 +aI6213 +aI6214 +aI6215 +aI6216 +aI6217 +aI6218 +aI6219 +aI6220 +aI6221 +aI6222 +aI6223 +aI6224 +aI6225 +aI6226 +aI6227 +aI6228 +aI6229 +aI6230 +aI6231 +aI6232 +aI6233 +aI6234 +aI6235 +aI6236 +aI6237 +aI6238 +aI6239 +aI6240 +aI6241 +aI6242 +aI6243 +aI6244 +aI6245 +aI6246 +aI6247 +aI6248 +aI6249 +aI6250 +aI6251 +aI6252 +aI6253 +aI6254 +aI6255 +aI6256 +aI6257 +aI6258 +aI6259 +aI6260 +aI6261 +aI6262 +aI6263 +aI6264 +aI6265 +aI6266 +aI6267 +aI6268 +aI6269 +aI6270 +aI6271 +aI6272 +aI6273 +aI6274 +aI6275 +aI6276 +aI6277 +aI6278 +aI6279 +aI6280 +aI6281 +aI6282 +aI6283 +aI6284 +aI6285 +aI6286 +aI6287 +aI6288 +aI6289 +aI6290 +aI6291 +aI6292 +aI6293 +aI6294 +aI6295 +aI6296 +aI6297 +aI6298 +aI6299 +aI6300 +aI6301 +aI6302 +aI6303 +aI6304 +aI6305 +aI6306 +aI6307 +aI6308 +aI6309 +aI6310 +aI6311 +aI6312 +aI6313 +aI6314 +aI6315 +aI6316 +aI6317 +aI6318 +aI6319 +aI6320 +aI6321 +aI6322 +aI6323 +aI6324 +aI6325 +aI6326 +aI6327 +aI6328 +aI6329 +aI6330 +aI6331 +aI6332 +aI6333 +aI6334 +aI6335 +aI6336 +aI6337 +aI6338 +aI6339 +aI6340 +aI6341 +aI6342 +aI6343 +aI6344 +aI6345 +aI6346 +aI6347 +aI6348 +aI6349 +aI6350 +aI6351 +aI6352 +aI6353 +aI6354 +aI6355 +aI6356 +aI6357 +aI6358 +aI6359 +aI6360 +aI6361 +aI6362 +aI6363 +aI6364 +aI6365 +aI6366 +aI6367 +aI6368 +aI6369 +aI6370 +aI6371 +aI6372 +aI6373 +aI6374 +aI6375 +aI6376 +aI6377 +aI6378 +aI6379 +aI6380 +aI6381 +aI6382 +aI6383 +aI6384 +aI6385 +aI6386 +aI6387 +aI6388 +aI6389 +aI6390 +aI6391 +aI6392 +aI6393 +aI6394 +aI6395 +aI6396 +aI6397 +aI6398 +aI6399 +aI6400 +aI6401 +aI6402 +aI6403 +aI6404 +aI6405 +aI6406 +aI6407 +aI6408 +aI6409 +aI6410 +aI6411 +aI6412 +aI6413 +aI6414 +aI6415 +aI6416 +aI6417 +aI6418 +aI6419 +aI6420 +aI6421 +aI6422 +aI6423 +aI6424 +aI6425 +aI6426 +aI6427 +aI6428 +aI6429 +aI6430 +aI6431 +aI6432 +aI6433 +aI6434 +aI6435 +aI6436 +aI6437 +aI6438 +aI6439 +aI6440 +aI6441 +aI6442 +aI6443 +aI6444 +aI6445 +aI6446 +aI6447 +aI6448 +aI6449 +aI6450 +aI6451 +aI6452 +aI6453 +aI6454 +aI6455 +aI6456 +aI6457 +aI6458 +aI6459 +aI6460 +aI6461 +aI6462 +aI6463 +aI6464 +aI6465 +aI6466 +aI6467 +aI6468 +aI6469 +aI6470 +aI6471 +aI6472 +aI6473 +aI6474 +aI6475 +aI6476 +aI6477 +aI6478 +aI6479 +aI6480 +aI6481 +aI6482 +aI6483 +aI6484 +aI6485 +aI6486 +aI6487 +aI6488 +aI6489 +aI6490 +aI6491 +aI6492 +aI6493 +aI6494 +aI6495 +aI6496 +aI6497 +aI6498 +aI6499 +aI6500 +aI6501 +aI6502 +aI6503 +aI6504 +aI6505 +aI6506 +aI6507 +aI6508 +aI6509 +aI6510 +aI6511 +aI6512 +aI6513 +aI6514 +aI6515 +aI6516 +aI6517 +aI6518 +aI6519 +aI6520 +aI6521 +aI6522 +aI6523 +aI6524 +aI6525 +aI6526 +aI6527 +aI6528 +aI6529 +aI6530 +aI6531 +aI6532 +aI6533 +aI6534 +aI6535 +aI6536 +aI6537 +aI6538 +aI6539 +aI6540 +aI6541 +aI6542 +aI6543 +aI6544 +aI6545 +aI6546 +aI6547 +aI6548 +aI6549 +aI6550 +aI6551 +aI6552 +aI6553 +aI6554 +aI6555 +aI6556 +aI6557 +aI6558 +aI6559 +aI6560 +aI6561 +aI6562 +aI6563 +aI6564 +aI6565 +aI6566 +aI6567 +aI6568 +aI6569 +aI6570 +aI6571 +aI6572 +aI6573 +aI6574 +aI6575 +aI6576 +aI6577 +aI6578 +aI6579 +aI6580 +aI6581 +aI6582 +aI6583 +aI6584 +aI6585 +aI6586 +aI6587 +aI6588 +aI6589 +aI6590 +aI6591 +aI6592 +aI6593 +aI6594 +aI6595 +aI6596 +aI6597 +aI6598 +aI6599 +aI6600 +aI6601 +aI6602 +aI6603 +aI6604 +aI6605 +aI6606 +aI6607 +aI6608 +aI6609 +aI6610 +aI6611 +aI6612 +aI6613 +aI6614 +aI6615 +aI6616 +aI6617 +aI6618 +aI6619 +aI6620 +aI6621 +aI6622 +aI6623 +aI6624 +aI6625 +aI6626 +aI6627 +aI6628 +aI6629 +aI6630 +aI6631 +aI6632 +aI6633 +aI6634 +aI6635 +aI6636 +aI6637 +aI6638 +aI6639 +aI6640 +aI6641 +aI6642 +aI6643 +aI6644 +aI6645 +aI6646 +aI6647 +aI6648 +aI6649 +aI6650 +aI6651 +aI6652 +aI6653 +aI6654 +aI6655 +aI6656 +aI6657 +aI6658 +aI6659 +aI6660 +aI6661 +aI6662 +aI6663 +aI6664 +aI6665 +aI6666 +aI6667 +aI6668 +aI6669 +aI6670 +aI6671 +aI6672 +aI6673 +aI6674 +aI6675 +aI6676 +aI6677 +aI6678 +aI6679 +aI6680 +aI6681 +aI6682 +aI6683 +aI6684 +aI6685 +aI6686 +aI6687 +aI6688 +aI6689 +aI6690 +aI6691 +aI6692 +aI6693 +aI6694 +aI6695 +aI6696 +aI6697 +aI6698 +aI6699 +aI6700 +aI6701 +aI6702 +aI6703 +aI6704 +aI6705 +aI6706 +aI6707 +aI6708 +aI6709 +aI6710 +aI6711 +aI6712 +aI6713 +aI6714 +aI6715 +aI6716 +aI6717 +aI6718 +aI6719 +aI6720 +aI6721 +aI6722 +aI6723 +aI6724 +aI6725 +aI6726 +aI6727 +aI6728 +aI6729 +aI6730 +aI6731 +aI6732 +aI6733 +aI6734 +aI6735 +aI6736 +aI6737 +aI6738 +aI6739 +aI6740 +aI6741 +aI6742 +aI6743 +aI6744 +aI6745 +aI6746 +aI6747 +aI6748 +aI6749 +aI6750 +aI6751 +aI6752 +aI6753 +aI6754 +aI6755 +aI6756 +aI6757 +aI6758 +aI6759 +aI6760 +aI6761 +aI6762 +aI6763 +aI6764 +aI6765 +aI6766 +aI6767 +aI6768 +aI6769 +aI6770 +aI6771 +aI6772 +aI6773 +aI6774 +aI6775 +aI6776 +aI6777 +aI6778 +aI6779 +aI6780 +aI6781 +aI6782 +aI6783 +aI6784 +aI6785 +aI6786 +aI6787 +aI6788 +aI6789 +aI6790 +aI6791 +aI6792 +aI6793 +aI6794 +aI6795 +aI6796 +aI6797 +aI6798 +aI6799 +aI6800 +aI6801 +aI6802 +aI6803 +aI6804 +aI6805 +aI6806 +aI6807 +aI6808 +aI6809 +aI6810 +aI6811 +aI6812 +aI6813 +aI6814 +aI6815 +aI6816 +aI6817 +aI6818 +aI6819 +aI6820 +aI6821 +aI6822 +aI6823 +aI6824 +aI6825 +aI6826 +aI6827 +aI6828 +aI6829 +aI6830 +aI6831 +aI6832 +aI6833 +aI6834 +aI6835 +aI6836 +aI6837 +aI6838 +aI6839 +aI6840 +aI6841 +aI6842 +aI6843 +aI6844 +aI6845 +aI6846 +aI6847 +aI6848 +aI6849 +aI6850 +aI6851 +aI6852 +aI6853 +aI6854 +aI6855 +aI6856 +aI6857 +aI6858 +aI6859 +aI6860 +aI6861 +aI6862 +aI6863 +aI6864 +aI6865 +aI6866 +aI6867 +aI6868 +aI6869 +aI6870 +aI6871 +aI6872 +aI6873 +aI6874 +aI6875 +aI6876 +aI6877 +aI6878 +aI6879 +aI6880 +aI6881 +aI6882 +aI6883 +aI6884 +aI6885 +aI6886 +aI6887 +aI6888 +aI6889 +aI6890 +aI6891 +aI6892 +aI6893 +aI6894 +aI6895 +aI6896 +aI6897 +aI6898 +aI6899 +aI6900 +aI6901 +aI6902 +aI6903 +aI6904 +aI6905 +aI6906 +aI6907 +aI6908 +aI6909 +aI6910 +aI6911 +aI6912 +aI6913 +aI6914 +aI6915 +aI6916 +aI6917 +aI6918 +aI6919 +aI6920 +aI6921 +aI6922 +aI6923 +aI6924 +aI6925 +aI6926 +aI6927 +aI6928 +aI6929 +aI6930 +aI6931 +aI6932 +aI6933 +aI6934 +aI6935 +aI6936 +aI6937 +aI6938 +aI6939 +aI6940 +aI6941 +aI6942 +aI6943 +aI6944 +aI6945 +aI6946 +aI6947 +aI6948 +aI6949 +aI6950 +aI6951 +aI6952 +aI6953 +aI6954 +aI6955 +aI6956 +aI6957 +aI6958 +aI6959 +aI6960 +aI6961 +aI6962 +aI6963 +aI6964 +aI6965 +aI6966 +aI6967 +aI6968 +aI6969 +aI6970 +aI6971 +aI6972 +aI6973 +aI6974 +aI6975 +aI6976 +aI6977 +aI6978 +aI6979 +aI6980 +aI6981 +aI6982 +aI6983 +aI6984 +aI6985 +aI6986 +aI6987 +aI6988 +aI6989 +aI6990 +aI6991 +aI6992 +aI6993 +aI6994 +aI6995 +aI6996 +aI6997 +aI6998 +aI6999 +aI7000 +aI7001 +aI7002 +aI7003 +aI7004 +aI7005 +aI7006 +aI7007 +aI7008 +aI7009 +aI7010 +aI7011 +aI7012 +aI7013 +aI7014 +aI7015 +aI7016 +aI7017 +aI7018 +aI7019 +aI7020 +aI7021 +aI7022 +aI7023 +aI7024 +aI7025 +aI7026 +aI7027 +aI7028 +aI7029 +aI7030 +aI7031 +aI7032 +aI7033 +aI7034 +aI7035 +aI7036 +aI7037 +aI7038 +aI7039 +aI7040 +aI7041 +aI7042 +aI7043 +aI7044 +aI7045 +aI7046 +aI7047 +aI7048 +aI7049 +aI7050 +aI7051 +aI7052 +aI7053 +aI7054 +aI7055 +aI7056 +aI7057 +aI7058 +aI7059 +aI7060 +aI7061 +aI7062 +aI7063 +aI7064 +aI7065 +aI7066 +aI7067 +aI7068 +aI7069 +aI7070 +aI7071 +aI7072 +aI7073 +aI7074 +aI7075 +aI7076 +aI7077 +aI7078 +aI7079 +aI7080 +aI7081 +aI7082 +aI7083 +aI7084 +aI7085 +aI7086 +aI7087 +aI7088 +aI7089 +aI7090 +aI7091 +aI7092 +aI7093 +aI7094 +aI7095 +aI7096 +aI7097 +aI7098 +aI7099 +aI7100 +aI7101 +aI7102 +aI7103 +aI7104 +aI7105 +aI7106 +aI7107 +aI7108 +aI7109 +aI7110 +aI7111 +aI7112 +aI7113 +aI7114 +aI7115 +aI7116 +aI7117 +aI7118 +aI7119 +aI7120 +aI7121 +aI7122 +aI7123 +aI7124 +aI7125 +aI7126 +aI7127 +aI7128 +aI7129 +aI7130 +aI7131 +aI7132 +aI7133 +aI7134 +aI7135 +aI7136 +aI7137 +aI7138 +aI7139 +aI7140 +aI7141 +aI7142 +aI7143 +aI7144 +aI7145 +aI7146 +aI7147 +aI7148 +aI7149 +aI7150 +aI7151 +aI7152 +aI7153 +aI7154 +aI7155 +aI7156 +aI7157 +aI7158 +aI7159 +aI7160 +aI7161 +aI7162 +aI7163 +aI7164 +aI7165 +aI7166 +aI7167 +aI7168 +aI7169 +aI7170 +aI7171 +aI7172 +aI7173 +aI7174 +aI7175 +aI7176 +aI7177 +aI7178 +aI7179 +aI7180 +aI7181 +aI7182 +aI7183 +aI7184 +aI7185 +aI7186 +aI7187 +aI7188 +aI7189 +aI7190 +aI7191 +aI7192 +aI7193 +aI7194 +aI7195 +aI7196 +aI7197 +aI7198 +aI7199 +aI7200 +aI7201 +aI7202 +aI7203 +aI7204 +aI7205 +aI7206 +aI7207 +aI7208 +aI7209 +aI7210 +aI7211 +aI7212 +aI7213 +aI7214 +aI7215 +aI7216 +aI7217 +aI7218 +aI7219 +aI7220 +aI7221 +aI7222 +aI7223 +aI7224 +aI7225 +aI7226 +aI7227 +aI7228 +aI7229 +aI7230 +aI7231 +aI7232 +aI7233 +aI7234 +aI7235 +aI7236 +aI7237 +aI7238 +aI7239 +aI7240 +aI7241 +aI7242 +aI7243 +aI7244 +aI7245 +aI7246 +aI7247 +aI7248 +aI7249 +aI7250 +aI7251 +aI7252 +aI7253 +aI7254 +aI7255 +aI7256 +aI7257 +aI7258 +aI7259 +aI7260 +aI7261 +aI7262 +aI7263 +aI7264 +aI7265 +aI7266 +aI7267 +aI7268 +aI7269 +aI7270 +aI7271 +aI7272 +aI7273 +aI7274 +aI7275 +aI7276 +aI7277 +aI7278 +aI7279 +aI7280 +aI7281 +aI7282 +aI7283 +aI7284 +aI7285 +aI7286 +aI7287 +aI7288 +aI7289 +aI7290 +aI7291 +aI7292 +aI7293 +aI7294 +aI7295 +aI7296 +aI7297 +aI7298 +aI7299 +aI7300 +aI7301 +aI7302 +aI7303 +aI7304 +aI7305 +aI7306 +aI7307 +aI7308 +aI7309 +aI7310 +aI7311 +aI7312 +aI7313 +aI7314 +aI7315 +aI7316 +aI7317 +aI7318 +aI7319 +aI7320 +aI7321 +aI7322 +aI7323 +aI7324 +aI7325 +aI7326 +aI7327 +aI7328 +aI7329 +aI7330 +aI7331 +aI7332 +aI7333 +aI7334 +aI7335 +aI7336 +aI7337 +aI7338 +aI7339 +aI7340 +aI7341 +aI7342 +aI7343 +aI7344 +aI7345 +aI7346 +aI7347 +aI7348 +aI7349 +aI7350 +aI7351 +aI7352 +aI7353 +aI7354 +aI7355 +aI7356 +aI7357 +aI7358 +aI7359 +aI7360 +aI7361 +aI7362 +aI7363 +aI7364 +aI7365 +aI7366 +aI7367 +aI7368 +aI7369 +aI7370 +aI7371 +aI7372 +aI7373 +aI7374 +aI7375 +aI7376 +aI7377 +aI7378 +aI7379 +aI7380 +aI7381 +aI7382 +aI7383 +aI7384 +aI7385 +aI7386 +aI7387 +aI7388 +aI7389 +aI7390 +aI7391 +aI7392 +aI7393 +aI7394 +aI7395 +aI7396 +aI7397 +aI7398 +aI7399 +aI7400 +aI7401 +aI7402 +aI7403 +aI7404 +aI7405 +aI7406 +aI7407 +aI7408 +aI7409 +aI7410 +aI7411 +aI7412 +aI7413 +aI7414 +aI7415 +aI7416 +aI7417 +aI7418 +aI7419 +aI7420 +aI7421 +aI7422 +aI7423 +aI7424 +aI7425 +aI7426 +aI7427 +aI7428 +aI7429 +aI7430 +aI7431 +aI7432 +aI7433 +aI7434 +aI7435 +aI7436 +aI7437 +aI7438 +aI7439 +aI7440 +aI7441 +aI7442 +aI7443 +aI7444 +aI7445 +aI7446 +aI7447 +aI7448 +aI7449 +aI7450 +aI7451 +aI7452 +aI7453 +aI7454 +aI7455 +aI7456 +aI7457 +aI7458 +aI7459 +aI7460 +aI7461 +aI7462 +aI7463 +aI7464 +aI7465 +aI7466 +aI7467 +aI7468 +aI7469 +aI7470 +aI7471 +aI7472 +aI7473 +aI7474 +aI7475 +aI7476 +aI7477 +aI7478 +aI7479 +aI7480 +aI7481 +aI7482 +aI7483 +aI7484 +aI7485 +aI7486 +aI7487 +aI7488 +aI7489 +aI7490 +aI7491 +aI7492 +aI7493 +aI7494 +aI7495 +aI7496 +aI7497 +aI7498 +aI7499 +aI7500 +aI7501 +aI7502 +aI7503 +aI7504 +aI7505 +aI7506 +aI7507 +aI7508 +aI7509 +aI7510 +aI7511 +aI7512 +aI7513 +aI7514 +aI7515 +aI7516 +aI7517 +aI7518 +aI7519 +aI7520 +aI7521 +aI7522 +aI7523 +aI7524 +aI7525 +aI7526 +aI7527 +aI7528 +aI7529 +aI7530 +aI7531 +aI7532 +aI7533 +aI7534 +aI7535 +aI7536 +aI7537 +aI7538 +aI7539 +aI7540 +aI7541 +aI7542 +aI7543 +aI7544 +aI7545 +aI7546 +aI7547 +aI7548 +aI7549 +aI7550 +aI7551 +aI7552 +aI7553 +aI7554 +aI7555 +aI7556 +aI7557 +aI7558 +aI7559 +aI7560 +aI7561 +aI7562 +aI7563 +aI7564 +aI7565 +aI7566 +aI7567 +aI7568 +aI7569 +aI7570 +aI7571 +aI7572 +aI7573 +aI7574 +aI7575 +aI7576 +aI7577 +aI7578 +aI7579 +aI7580 +aI7581 +aI7582 +aI7583 +aI7584 +aI7585 +aI7586 +aI7587 +aI7588 +aI7589 +aI7590 +aI7591 +aI7592 +aI7593 +aI7594 +aI7595 +aI7596 +aI7597 +aI7598 +aI7599 +aI7600 +aI7601 +aI7602 +aI7603 +aI7604 +aI7605 +aI7606 +aI7607 +aI7608 +aI7609 +aI7610 +aI7611 +aI7612 +aI7613 +aI7614 +aI7615 +aI7616 +aI7617 +aI7618 +aI7619 +aI7620 +aI7621 +aI7622 +aI7623 +aI7624 +aI7625 +aI7626 +aI7627 +aI7628 +aI7629 +aI7630 +aI7631 +aI7632 +aI7633 +aI7634 +aI7635 +aI7636 +aI7637 +aI7638 +aI7639 +aI7640 +aI7641 +aI7642 +aI7643 +aI7644 +aI7645 +aI7646 +aI7647 +aI7648 +aI7649 +aI7650 +aI7651 +aI7652 +aI7653 +aI7654 +aI7655 +aI7656 +aI7657 +aI7658 +aI7659 +aI7660 +aI7661 +aI7662 +aI7663 +aI7664 +aI7665 +aI7666 +aI7667 +aI7668 +aI7669 +aI7670 +aI7671 +aI7672 +aI7673 +aI7674 +aI7675 +aI7676 +aI7677 +aI7678 +aI7679 +aI7680 +aI7681 +aI7682 +aI7683 +aI7684 +aI7685 +aI7686 +aI7687 +aI7688 +aI7689 +aI7690 +aI7691 +aI7692 +aI7693 +aI7694 +aI7695 +aI7696 +aI7697 +aI7698 +aI7699 +aI7700 +aI7701 +aI7702 +aI7703 +aI7704 +aI7705 +aI7706 +aI7707 +aI7708 +aI7709 +aI7710 +aI7711 +aI7712 +aI7713 +aI7714 +aI7715 +aI7716 +aI7717 +aI7718 +aI7719 +aI7720 +aI7721 +aI7722 +aI7723 +aI7724 +aI7725 +aI7726 +aI7727 +aI7728 +aI7729 +aI7730 +aI7731 +aI7732 +aI7733 +aI7734 +aI7735 +aI7736 +aI7737 +aI7738 +aI7739 +aI7740 +aI7741 +aI7742 +aI7743 +aI7744 +aI7745 +aI7746 +aI7747 +aI7748 +aI7749 +aI7750 +aI7751 +aI7752 +aI7753 +aI7754 +aI7755 +aI7756 +aI7757 +aI7758 +aI7759 +aI7760 +aI7761 +aI7762 +aI7763 +aI7764 +aI7765 +aI7766 +aI7767 +aI7768 +aI7769 +aI7770 +aI7771 +aI7772 +aI7773 +aI7774 +aI7775 +aI7776 +aI7777 +aI7778 +aI7779 +aI7780 +aI7781 +aI7782 +aI7783 +aI7784 +aI7785 +aI7786 +aI7787 +aI7788 +aI7789 +aI7790 +aI7791 +aI7792 +aI7793 +aI7794 +aI7795 +aI7796 +aI7797 +aI7798 +aI7799 +aI7800 +aI7801 +aI7802 +aI7803 +aI7804 +aI7805 +aI7806 +aI7807 +aI7808 +aI7809 +aI7810 +aI7811 +aI7812 +aI7813 +aI7814 +aI7815 +aI7816 +aI7817 +aI7818 +aI7819 +aI7820 +aI7821 +aI7822 +aI7823 +aI7824 +aI7825 +aI7826 +aI7827 +aI7828 +aI7829 +aI7830 +aI7831 +aI7832 +aI7833 +aI7834 +aI7835 +aI7836 +aI7837 +aI7838 +aI7839 +aI7840 +aI7841 +aI7842 +aI7843 +aI7844 +aI7845 +aI7846 +aI7847 +aI7848 +aI7849 +aI7850 +aI7851 +aI7852 +aI7853 +aI7854 +aI7855 +aI7856 +aI7857 +aI7858 +aI7859 +aI7860 +aI7861 +aI7862 +aI7863 +aI7864 +aI7865 +aI7866 +aI7867 +aI7868 +aI7869 +aI7870 +aI7871 +aI7872 +aI7873 +aI7874 +aI7875 +aI7876 +aI7877 +aI7878 +aI7879 +aI7880 +aI7881 +aI7882 +aI7883 +aI7884 +aI7885 +aI7886 +aI7887 +aI7888 +aI7889 +aI7890 +aI7891 +aI7892 +aI7893 +aI7894 +aI7895 +aI7896 +aI7897 +aI7898 +aI7899 +aI7900 +aI7901 +aI7902 +aI7903 +aI7904 +aI7905 +aI7906 +aI7907 +aI7908 +aI7909 +aI7910 +aI7911 +aI7912 +aI7913 +aI7914 +aI7915 +aI7916 +aI7917 +aI7918 +aI7919 +aI7920 +aI7921 +aI7922 +aI7923 +aI7924 +aI7925 +aI7926 +aI7927 +aI7928 +aI7929 +aI7930 +aI7931 +aI7932 +aI7933 +aI7934 +aI7935 +aI7936 +aI7937 +aI7938 +aI7939 +aI7940 +aI7941 +aI7942 +aI7943 +aI7944 +aI7945 +aI7946 +aI7947 +aI7948 +aI7949 +aI7950 +aI7951 +aI7952 +aI7953 +aI7954 +aI7955 +aI7956 +aI7957 +aI7958 +aI7959 +aI7960 +aI7961 +aI7962 +aI7963 +aI7964 +aI7965 +aI7966 +aI7967 +aI7968 +aI7969 +aI7970 +aI7971 +aI7972 +aI7973 +aI7974 +aI7975 +aI7976 +aI7977 +aI7978 +aI7979 +aI7980 +aI7981 +aI7982 +aI7983 +aI7984 +aI7985 +aI7986 +aI7987 +aI7988 +aI7989 +aI7990 +aI7991 +aI7992 +aI7993 +aI7994 +aI7995 +aI7996 +aI7997 +aI7998 +aI7999 +aI8000 +aI8001 +aI8002 +aI8003 +aI8004 +aI8005 +aI8006 +aI8007 +aI8008 +aI8009 +aI8010 +aI8011 +aI8012 +aI8013 +aI8014 +aI8015 +aI8016 +aI8017 +aI8018 +aI8019 +aI8020 +aI8021 +aI8022 +aI8023 +aI8024 +aI8025 +aI8026 +aI8027 +aI8028 +aI8029 +aI8030 +aI8031 +aI8032 +aI8033 +aI8034 +aI8035 +aI8036 +aI8037 +aI8038 +aI8039 +aI8040 +aI8041 +aI8042 +aI8043 +aI8044 +aI8045 +aI8046 +aI8047 +aI8048 +aI8049 +aI8050 +aI8051 +aI8052 +aI8053 +aI8054 +aI8055 +aI8056 +aI8057 +aI8058 +aI8059 +aI8060 +aI8061 +aI8062 +aI8063 +aI8064 +aI8065 +aI8066 +aI8067 +aI8068 +aI8069 +aI8070 +aI8071 +aI8072 +aI8073 +aI8074 +aI8075 +aI8076 +aI8077 +aI8078 +aI8079 +aI8080 +aI8081 +aI8082 +aI8083 +aI8084 +aI8085 +aI8086 +aI8087 +aI8088 +aI8089 +aI8090 +aI8091 +aI8092 +aI8093 +aI8094 +aI8095 +aI8096 +aI8097 +aI8098 +aI8099 +aI8100 +aI8101 +aI8102 +aI8103 +aI8104 +aI8105 +aI8106 +aI8107 +aI8108 +aI8109 +aI8110 +aI8111 +aI8112 +aI8113 +aI8114 +aI8115 +aI8116 +aI8117 +aI8118 +aI8119 +aI8120 +aI8121 +aI8122 +aI8123 +aI8124 +aI8125 +aI8126 +aI8127 +aI8128 +aI8129 +aI8130 +aI8131 +aI8132 +aI8133 +aI8134 +aI8135 +aI8136 +aI8137 +aI8138 +aI8139 +aI8140 +aI8141 +aI8142 +aI8143 +aI8144 +aI8145 +aI8146 +aI8147 +aI8148 +aI8149 +aI8150 +aI8151 +aI8152 +aI8153 +aI8154 +aI8155 +aI8156 +aI8157 +aI8158 +aI8159 +aI8160 +aI8161 +aI8162 +aI8163 +aI8164 +aI8165 +aI8166 +aI8167 +aI8168 +aI8169 +aI8170 +aI8171 +aI8172 +aI8173 +aI8174 +aI8175 +aI8176 +aI8177 +aI8178 +aI8179 +aI8180 +aI8181 +aI8182 +aI8183 +aI8184 +aI8185 +aI8186 +aI8187 +aI8188 +aI8189 +aI8190 +aI8191 +aI8192 +aI8193 +aI8194 +aI8195 +aI8196 +aI8197 +aI8198 +aI8199 +aI8200 +aI8201 +aI8202 +aI8203 +aI8204 +aI8205 +aI8206 +aI8207 +aI8208 +aI8209 +aI8210 +aI8211 +aI8212 +aI8213 +aI8214 +aI8215 +aI8216 +aI8217 +aI8218 +aI8219 +aI8220 +aI8221 +aI8222 +aI8223 +aI8224 +aI8225 +aI8226 +aI8227 +aI8228 +aI8229 +aI8230 +aI8231 +aI8232 +aI8233 +aI8234 +aI8235 +aI8236 +aI8237 +aI8238 +aI8239 +aI8240 +aI8241 +aI8242 +aI8243 +aI8244 +aI8245 +aI8246 +aI8247 +aI8248 +aI8249 +aI8250 +aI8251 +aI8252 +aI8253 +aI8254 +aI8255 +aI8256 +aI8257 +aI8258 +aI8259 +aI8260 +aI8261 +aI8262 +aI8263 +aI8264 +aI8265 +aI8266 +aI8267 +aI8268 +aI8269 +aI8270 +aI8271 +aI8272 +aI8273 +aI8274 +aI8275 +aI8276 +aI8277 +aI8278 +aI8279 +aI8280 +aI8281 +aI8282 +aI8283 +aI8284 +aI8285 +aI8286 +aI8287 +aI8288 +aI8289 +aI8290 +aI8291 +aI8292 +aI8293 +aI8294 +aI8295 +aI8296 +aI8297 +aI8298 +aI8299 +aI8300 +aI8301 +aI8302 +aI8303 +aI8304 +aI8305 +aI8306 +aI8307 +aI8308 +aI8309 +aI8310 +aI8311 +aI8312 +aI8313 +aI8314 +aI8315 +aI8316 +aI8317 +aI8318 +aI8319 +aI8320 +aI8321 +aI8322 +aI8323 +aI8324 +aI8325 +aI8326 +aI8327 +aI8328 +aI8329 +aI8330 +aI8331 +aI8332 +aI8333 +aI8334 +aI8335 +aI8336 +aI8337 +aI8338 +aI8339 +aI8340 +aI8341 +aI8342 +aI8343 +aI8344 +aI8345 +aI8346 +aI8347 +aI8348 +aI8349 +aI8350 +aI8351 +aI8352 +aI8353 +aI8354 +aI8355 +aI8356 +aI8357 +aI8358 +aI8359 +aI8360 +aI8361 +aI8362 +aI8363 +aI8364 +aI8365 +aI8366 +aI8367 +aI8368 +aI8369 +aI8370 +aI8371 +aI8372 +aI8373 +aI8374 +aI8375 +aI8376 +aI8377 +aI8378 +aI8379 +aI8380 +aI8381 +aI8382 +aI8383 +aI8384 +aI8385 +aI8386 +aI8387 +aI8388 +aI8389 +aI8390 +aI8391 +aI8392 +aI8393 +aI8394 +aI8395 +aI8396 +aI8397 +aI8398 +aI8399 +aI8400 +aI8401 +aI8402 +aI8403 +aI8404 +aI8405 +aI8406 +aI8407 +aI8408 +aI8409 +aI8410 +aI8411 +aI8412 +aI8413 +aI8414 +aI8415 +aI8416 +aI8417 +aI8418 +aI8419 +aI8420 +aI8421 +aI8422 +aI8423 +aI8424 +aI8425 +aI8426 +aI8427 +aI8428 +aI8429 +aI8430 +aI8431 +aI8432 +aI8433 +aI8434 +aI8435 +aI8436 +aI8437 +aI8438 +aI8439 +aI8440 +aI8441 +aI8442 +aI8443 +aI8444 +aI8445 +aI8446 +aI8447 +aI8448 +aI8449 +aI8450 +aI8451 +aI8452 +aI8453 +aI8454 +aI8455 +aI8456 +aI8457 +aI8458 +aI8459 +aI8460 +aI8461 +aI8462 +aI8463 +aI8464 +aI8465 +aI8466 +aI8467 +aI8468 +aI8469 +aI8470 +aI8471 +aI8472 +aI8473 +aI8474 +aI8475 +aI8476 +aI8477 +aI8478 +aI8479 +aI8480 +aI8481 +aI8482 +aI8483 +aI8484 +aI8485 +aI8486 +aI8487 +aI8488 +aI8489 +aI8490 +aI8491 +aI8492 +aI8493 +aI8494 +aI8495 +aI8496 +aI8497 +aI8498 +aI8499 +aI8500 +aI8501 +aI8502 +aI8503 +aI8504 +aI8505 +aI8506 +aI8507 +aI8508 +aI8509 +aI8510 +aI8511 +aI8512 +aI8513 +aI8514 +aI8515 +aI8516 +aI8517 +aI8518 +aI8519 +aI8520 +aI8521 +aI8522 +aI8523 +aI8524 +aI8525 +aI8526 +aI8527 +aI8528 +aI8529 +aI8530 +aI8531 +aI8532 +aI8533 +aI8534 +aI8535 +aI8536 +aI8537 +aI8538 +aI8539 +aI8540 +aI8541 +aI8542 +aI8543 +aI8544 +aI8545 +aI8546 +aI8547 +aI8548 +aI8549 +aI8550 +aI8551 +aI8552 +aI8553 +aI8554 +aI8555 +aI8556 +aI8557 +aI8558 +aI8559 +aI8560 +aI8561 +aI8562 +aI8563 +aI8564 +aI8565 +aI8566 +aI8567 +aI8568 +aI8569 +aI8570 +aI8571 +aI8572 +aI8573 +aI8574 +aI8575 +aI8576 +aI8577 +aI8578 +aI8579 +aI8580 +aI8581 +aI8582 +aI8583 +aI8584 +aI8585 +aI8586 +aI8587 +aI8588 +aI8589 +aI8590 +aI8591 +aI8592 +aI8593 +aI8594 +aI8595 +aI8596 +aI8597 +aI8598 +aI8599 +aI8600 +aI8601 +aI8602 +aI8603 +aI8604 +aI8605 +aI8606 +aI8607 +aI8608 +aI8609 +aI8610 +aI8611 +aI8612 +aI8613 +aI8614 +aI8615 +aI8616 +aI8617 +aI8618 +aI8619 +aI8620 +aI8621 +aI8622 +aI8623 +aI8624 +aI8625 +aI8626 +aI8627 +aI8628 +aI8629 +aI8630 +aI8631 +aI8632 +aI8633 +aI8634 +aI8635 +aI8636 +aI8637 +aI8638 +aI8639 +aI8640 +aI8641 +aI8642 +aI8643 +aI8644 +aI8645 +aI8646 +aI8647 +aI8648 +aI8649 +aI8650 +aI8651 +aI8652 +aI8653 +aI8654 +aI8655 +aI8656 +aI8657 +aI8658 +aI8659 +aI8660 +aI8661 +aI8662 +aI8663 +aI8664 +aI8665 +aI8666 +aI8667 +aI8668 +aI8669 +aI8670 +aI8671 +aI8672 +aI8673 +aI8674 +aI8675 +aI8676 +aI8677 +aI8678 +aI8679 +aI8680 +aI8681 +aI8682 +aI8683 +aI8684 +aI8685 +aI8686 +aI8687 +aI8688 +aI8689 +aI8690 +aI8691 +aI8692 +aI8693 +aI8694 +aI8695 +aI8696 +aI8697 +aI8698 +aI8699 +aI8700 +aI8701 +aI8702 +aI8703 +aI8704 +aI8705 +aI8706 +aI8707 +aI8708 +aI8709 +aI8710 +aI8711 +aI8712 +aI8713 +aI8714 +aI8715 +aI8716 +aI8717 +aI8718 +aI8719 +aI8720 +aI8721 +aI8722 +aI8723 +aI8724 +aI8725 +aI8726 +aI8727 +aI8728 +aI8729 +aI8730 +aI8731 +aI8732 +aI8733 +aI8734 +aI8735 +aI8736 +aI8737 +aI8738 +aI8739 +aI8740 +aI8741 +aI8742 +aI8743 +aI8744 +aI8745 +aI8746 +aI8747 +aI8748 +aI8749 +aI8750 +aI8751 +aI8752 +aI8753 +aI8754 +aI8755 +aI8756 +aI8757 +aI8758 +aI8759 +aI8760 +aI8761 +aI8762 +aI8763 +aI8764 +aI8765 +aI8766 +aI8767 +aI8768 +aI8769 +aI8770 +aI8771 +aI8772 +aI8773 +aI8774 +aI8775 +aI8776 +aI8777 +aI8778 +aI8779 +aI8780 +aI8781 +aI8782 +aI8783 +aI8784 +aI8785 +aI8786 +aI8787 +aI8788 +aI8789 +aI8790 +aI8791 +aI8792 +aI8793 +aI8794 +aI8795 +aI8796 +aI8797 +aI8798 +aI8799 +aI8800 +aI8801 +aI8802 +aI8803 +aI8804 +aI8805 +aI8806 +aI8807 +aI8808 +aI8809 +aI8810 +aI8811 +aI8812 +aI8813 +aI8814 +aI8815 +aI8816 +aI8817 +aI8818 +aI8819 +aI8820 +aI8821 +aI8822 +aI8823 +aI8824 +aI8825 +aI8826 +aI8827 +aI8828 +aI8829 +aI8830 +aI8831 +aI8832 +aI8833 +aI8834 +aI8835 +aI8836 +aI8837 +aI8838 +aI8839 +aI8840 +aI8841 +aI8842 +aI8843 +aI8844 +aI8845 +aI8846 +aI8847 +aI8848 +aI8849 +aI8850 +aI8851 +aI8852 +aI8853 +aI8854 +aI8855 +aI8856 +aI8857 +aI8858 +aI8859 +aI8860 +aI8861 +aI8862 +aI8863 +aI8864 +aI8865 +aI8866 +aI8867 +aI8868 +aI8869 +aI8870 +aI8871 +aI8872 +aI8873 +aI8874 +aI8875 +aI8876 +aI8877 +aI8878 +aI8879 +aI8880 +aI8881 +aI8882 +aI8883 +aI8884 +aI8885 +aI8886 +aI8887 +aI8888 +aI8889 +aI8890 +aI8891 +aI8892 +aI8893 +aI8894 +aI8895 +aI8896 +aI8897 +aI8898 +aI8899 +aI8900 +aI8901 +aI8902 +aI8903 +aI8904 +aI8905 +aI8906 +aI8907 +aI8908 +aI8909 +aI8910 +aI8911 +aI8912 +aI8913 +aI8914 +aI8915 +aI8916 +aI8917 +aI8918 +aI8919 +aI8920 +aI8921 +aI8922 +aI8923 +aI8924 +aI8925 +aI8926 +aI8927 +aI8928 +aI8929 +aI8930 +aI8931 +aI8932 +aI8933 +aI8934 +aI8935 +aI8936 +aI8937 +aI8938 +aI8939 +aI8940 +aI8941 +aI8942 +aI8943 +aI8944 +aI8945 +aI8946 +aI8947 +aI8948 +aI8949 +aI8950 +aI8951 +aI8952 +aI8953 +aI8954 +aI8955 +aI8956 +aI8957 +aI8958 +aI8959 +aI8960 +aI8961 +aI8962 +aI8963 +aI8964 +aI8965 +aI8966 +aI8967 +aI8968 +aI8969 +aI8970 +aI8971 +aI8972 +aI8973 +aI8974 +aI8975 +aI8976 +aI8977 +aI8978 +aI8979 +aI8980 +aI8981 +aI8982 +aI8983 +aI8984 +aI8985 +aI8986 +aI8987 +aI8988 +aI8989 +aI8990 +aI8991 +aI8992 +aI8993 +aI8994 +aI8995 +aI8996 +aI8997 +aI8998 +aI8999 +aI9000 +aI9001 +aI9002 +aI9003 +aI9004 +aI9005 +aI9006 +aI9007 +aI9008 +aI9009 +aI9010 +aI9011 +aI9012 +aI9013 +aI9014 +aI9015 +aI9016 +aI9017 +aI9018 +aI9019 +aI9020 +aI9021 +aI9022 +aI9023 +aI9024 +aI9025 +aI9026 +aI9027 +aI9028 +aI9029 +aI9030 +aI9031 +aI9032 +aI9033 +aI9034 +aI9035 +aI9036 +aI9037 +aI9038 +aI9039 +aI9040 +aI9041 +aI9042 +aI9043 +aI9044 +aI9045 +aI9046 +aI9047 +aI9048 +aI9049 +aI9050 +aI9051 +aI9052 +aI9053 +aI9054 +aI9055 +aI9056 +aI9057 +aI9058 +aI9059 +aI9060 +aI9061 +aI9062 +aI9063 +aI9064 +aI9065 +aI9066 +aI9067 +aI9068 +aI9069 +aI9070 +aI9071 +aI9072 +aI9073 +aI9074 +aI9075 +aI9076 +aI9077 +aI9078 +aI9079 +aI9080 +aI9081 +aI9082 +aI9083 +aI9084 +aI9085 +aI9086 +aI9087 +aI9088 +aI9089 +aI9090 +aI9091 +aI9092 +aI9093 +aI9094 +aI9095 +aI9096 +aI9097 +aI9098 +aI9099 +aI9100 +aI9101 +aI9102 +aI9103 +aI9104 +aI9105 +aI9106 +aI9107 +aI9108 +aI9109 +aI9110 +aI9111 +aI9112 +aI9113 +aI9114 +aI9115 +aI9116 +aI9117 +aI9118 +aI9119 +aI9120 +aI9121 +aI9122 +aI9123 +aI9124 +aI9125 +aI9126 +aI9127 +aI9128 +aI9129 +aI9130 +aI9131 +aI9132 +aI9133 +aI9134 +aI9135 +aI9136 +aI9137 +aI9138 +aI9139 +aI9140 +aI9141 +aI9142 +aI9143 +aI9144 +aI9145 +aI9146 +aI9147 +aI9148 +aI9149 +aI9150 +aI9151 +aI9152 +aI9153 +aI9154 +aI9155 +aI9156 +aI9157 +aI9158 +aI9159 +aI9160 +aI9161 +aI9162 +aI9163 +aI9164 +aI9165 +aI9166 +aI9167 +aI9168 +aI9169 +aI9170 +aI9171 +aI9172 +aI9173 +aI9174 +aI9175 +aI9176 +aI9177 +aI9178 +aI9179 +aI9180 +aI9181 +aI9182 +aI9183 +aI9184 +aI9185 +aI9186 +aI9187 +aI9188 +aI9189 +aI9190 +aI9191 +aI9192 +aI9193 +aI9194 +aI9195 +aI9196 +aI9197 +aI9198 +aI9199 +aI9200 +aI9201 +aI9202 +aI9203 +aI9204 +aI9205 +aI9206 +aI9207 +aI9208 +aI9209 +aI9210 +aI9211 +aI9212 +aI9213 +aI9214 +aI9215 +aI9216 +aI9217 +aI9218 +aI9219 +aI9220 +aI9221 +aI9222 +aI9223 +aI9224 +aI9225 +aI9226 +aI9227 +aI9228 +aI9229 +aI9230 +aI9231 +aI9232 +aI9233 +aI9234 +aI9235 +aI9236 +aI9237 +aI9238 +aI9239 +aI9240 +aI9241 +aI9242 +aI9243 +aI9244 +aI9245 +aI9246 +aI9247 +aI9248 +aI9249 +aI9250 +aI9251 +aI9252 +aI9253 +aI9254 +aI9255 +aI9256 +aI9257 +aI9258 +aI9259 +aI9260 +aI9261 +aI9262 +aI9263 +aI9264 +aI9265 +aI9266 +aI9267 +aI9268 +aI9269 +aI9270 +aI9271 +aI9272 +aI9273 +aI9274 +aI9275 +aI9276 +aI9277 +aI9278 +aI9279 +aI9280 +aI9281 +aI9282 +aI9283 +aI9284 +aI9285 +aI9286 +aI9287 +aI9288 +aI9289 +aI9290 +aI9291 +aI9292 +aI9293 +aI9294 +aI9295 +aI9296 +aI9297 +aI9298 +aI9299 +aI9300 +aI9301 +aI9302 +aI9303 +aI9304 +aI9305 +aI9306 +aI9307 +aI9308 +aI9309 +aI9310 +aI9311 +aI9312 +aI9313 +aI9314 +aI9315 +aI9316 +aI9317 +aI9318 +aI9319 +aI9320 +aI9321 +aI9322 +aI9323 +aI9324 +aI9325 +aI9326 +aI9327 +aI9328 +aI9329 +aI9330 +aI9331 +aI9332 +aI9333 +aI9334 +aI9335 +aI9336 +aI9337 +aI9338 +aI9339 +aI9340 +aI9341 +aI9342 +aI9343 +aI9344 +aI9345 +aI9346 +aI9347 +aI9348 +aI9349 +aI9350 +aI9351 +aI9352 +aI9353 +aI9354 +aI9355 +aI9356 +aI9357 +aI9358 +aI9359 +aI9360 +aI9361 +aI9362 +aI9363 +aI9364 +aI9365 +aI9366 +aI9367 +aI9368 +aI9369 +aI9370 +aI9371 +aI9372 +aI9373 +aI9374 +aI9375 +aI9376 +aI9377 +aI9378 +aI9379 +aI9380 +aI9381 +aI9382 +aI9383 +aI9384 +aI9385 +aI9386 +aI9387 +aI9388 +aI9389 +aI9390 +aI9391 +aI9392 +aI9393 +aI9394 +aI9395 +aI9396 +aI9397 +aI9398 +aI9399 +aI9400 +aI9401 +aI9402 +aI9403 +aI9404 +aI9405 +aI9406 +aI9407 +aI9408 +aI9409 +aI9410 +aI9411 +aI9412 +aI9413 +aI9414 +aI9415 +aI9416 +aI9417 +aI9418 +aI9419 +aI9420 +aI9421 +aI9422 +aI9423 +aI9424 +aI9425 +aI9426 +aI9427 +aI9428 +aI9429 +aI9430 +aI9431 +aI9432 +aI9433 +aI9434 +aI9435 +aI9436 +aI9437 +aI9438 +aI9439 +aI9440 +aI9441 +aI9442 +aI9443 +aI9444 +aI9445 +aI9446 +aI9447 +aI9448 +aI9449 +aI9450 +aI9451 +aI9452 +aI9453 +aI9454 +aI9455 +aI9456 +aI9457 +aI9458 +aI9459 +aI9460 +aI9461 +aI9462 +aI9463 +aI9464 +aI9465 +aI9466 +aI9467 +aI9468 +aI9469 +aI9470 +aI9471 +aI9472 +aI9473 +aI9474 +aI9475 +aI9476 +aI9477 +aI9478 +aI9479 +aI9480 +aI9481 +aI9482 +aI9483 +aI9484 +aI9485 +aI9486 +aI9487 +aI9488 +aI9489 +aI9490 +aI9491 +aI9492 +aI9493 +aI9494 +aI9495 +aI9496 +aI9497 +aI9498 +aI9499 +aI9500 +aI9501 +aI9502 +aI9503 +aI9504 +aI9505 +aI9506 +aI9507 +aI9508 +aI9509 +aI9510 +aI9511 +aI9512 +aI9513 +aI9514 +aI9515 +aI9516 +aI9517 +aI9518 +aI9519 +aI9520 +aI9521 +aI9522 +aI9523 +aI9524 +aI9525 +aI9526 +aI9527 +aI9528 +aI9529 +aI9530 +aI9531 +aI9532 +aI9533 +aI9534 +aI9535 +aI9536 +aI9537 +aI9538 +aI9539 +aI9540 +aI9541 +aI9542 +aI9543 +aI9544 +aI9545 +aI9546 +aI9547 +aI9548 +aI9549 +aI9550 +aI9551 +aI9552 +aI9553 +aI9554 +aI9555 +aI9556 +aI9557 +aI9558 +aI9559 +aI9560 +aI9561 +aI9562 +aI9563 +aI9564 +aI9565 +aI9566 +aI9567 +aI9568 +aI9569 +aI9570 +aI9571 +aI9572 +aI9573 +aI9574 +aI9575 +aI9576 +aI9577 +aI9578 +aI9579 +aI9580 +aI9581 +aI9582 +aI9583 +aI9584 +aI9585 +aI9586 +aI9587 +aI9588 +aI9589 +aI9590 +aI9591 +aI9592 +aI9593 +aI9594 +aI9595 +aI9596 +aI9597 +aI9598 +aI9599 +aI9600 +aI9601 +aI9602 +aI9603 +aI9604 +aI9605 +aI9606 +aI9607 +aI9608 +aI9609 +aI9610 +aI9611 +aI9612 +aI9613 +aI9614 +aI9615 +aI9616 +aI9617 +aI9618 +aI9619 +aI9620 +aI9621 +aI9622 +aI9623 +aI9624 +aI9625 +aI9626 +aI9627 +aI9628 +aI9629 +aI9630 +aI9631 +aI9632 +aI9633 +aI9634 +aI9635 +aI9636 +aI9637 +aI9638 +aI9639 +aI9640 +aI9641 +aI9642 +aI9643 +aI9644 +aI9645 +aI9646 +aI9647 +aI9648 +aI9649 +aI9650 +aI9651 +aI9652 +aI9653 +aI9654 +aI9655 +aI9656 +aI9657 +aI9658 +aI9659 +aI9660 +aI9661 +aI9662 +aI9663 +aI9664 +aI9665 +aI9666 +aI9667 +aI9668 +aI9669 +aI9670 +aI9671 +aI9672 +aI9673 +aI9674 +aI9675 +aI9676 +aI9677 +aI9678 +aI9679 +aI9680 +aI9681 +aI9682 +aI9683 +aI9684 +aI9685 +aI9686 +aI9687 +aI9688 +aI9689 +aI9690 +aI9691 +aI9692 +aI9693 +aI9694 +aI9695 +aI9696 +aI9697 +aI9698 +aI9699 +aI9700 +aI9701 +aI9702 +aI9703 +aI9704 +aI9705 +aI9706 +aI9707 +aI9708 +aI9709 +aI9710 +aI9711 +aI9712 +aI9713 +aI9714 +aI9715 +aI9716 +aI9717 +aI9718 +aI9719 +aI9720 +aI9721 +aI9722 +aI9723 +aI9724 +aI9725 +aI9726 +aI9727 +aI9728 +aI9729 +aI9730 +aI9731 +aI9732 +aI9733 +aI9734 +aI9735 +aI9736 +aI9737 +aI9738 +aI9739 +aI9740 +aI9741 +aI9742 +aI9743 +aI9744 +aI9745 +aI9746 +aI9747 +aI9748 +aI9749 +aI9750 +aI9751 +aI9752 +aI9753 +aI9754 +aI9755 +aI9756 +aI9757 +aI9758 +aI9759 +aI9760 +aI9761 +aI9762 +aI9763 +aI9764 +aI9765 +aI9766 +aI9767 +aI9768 +aI9769 +aI9770 +aI9771 +aI9772 +aI9773 +aI9774 +aI9775 +aI9776 +aI9777 +aI9778 +aI9779 +aI9780 +aI9781 +aI9782 +aI9783 +aI9784 +aI9785 +aI9786 +aI9787 +aI9788 +aI9789 +aI9790 +aI9791 +aI9792 +aI9793 +aI9794 +aI9795 +aI9796 +aI9797 +aI9798 +aI9799 +aI9800 +aI9801 +aI9802 +aI9803 +aI9804 +aI9805 +aI9806 +aI9807 +aI9808 +aI9809 +aI9810 +aI9811 +aI9812 +aI9813 +aI9814 +aI9815 +aI9816 +aI9817 +aI9818 +aI9819 +aI9820 +aI9821 +aI9822 +aI9823 +aI9824 +aI9825 +aI9826 +aI9827 +aI9828 +aI9829 +aI9830 +aI9831 +aI9832 +aI9833 +aI9834 +aI9835 +aI9836 +aI9837 +aI9838 +aI9839 +aI9840 +aI9841 +aI9842 +aI9843 +aI9844 +aI9845 +aI9846 +aI9847 +aI9848 +aI9849 +aI9850 +aI9851 +aI9852 +aI9853 +aI9854 +aI9855 +aI9856 +aI9857 +aI9858 +aI9859 +aI9860 +aI9861 +aI9862 +aI9863 +aI9864 +aI9865 +aI9866 +aI9867 +aI9868 +aI9869 +aI9870 +aI9871 +aI9872 +aI9873 +aI9874 +aI9875 +aI9876 +aI9877 +aI9878 +aI9879 +aI9880 +aI9881 +aI9882 +aI9883 +aI9884 +aI9885 +aI9886 +aI9887 +aI9888 +aI9889 +aI9890 +aI9891 +aI9892 +aI9893 +aI9894 +aI9895 +aI9896 +aI9897 +aI9898 +aI9899 +aI9900 +aI9901 +aI9902 +aI9903 +aI9904 +aI9905 +aI9906 +aI9907 +aI9908 +aI9909 +aI9910 +aI9911 +aI9912 +aI9913 +aI9914 +aI9915 +aI9916 +aI9917 +aI9918 +aI9919 +aI9920 +aI9921 +aI9922 +aI9923 +aI9924 +aI9925 +aI9926 +aI9927 +aI9928 +aI9929 +aI9930 +aI9931 +aI9932 +aI9933 +aI9934 +aI9935 +aI9936 +aI9937 +aI9938 +aI9939 +aI9940 +aI9941 +aI9942 +aI9943 +aI9944 +aI9945 +aI9946 +aI9947 +aI9948 +aI9949 +aI9950 +aI9951 +aI9952 +aI9953 +aI9954 +aI9955 +aI9956 +aI9957 +aI9958 +aI9959 +aI9960 +aI9961 +aI9962 +aI9963 +aI9964 +aI9965 +aI9966 +aI9967 +aI9968 +aI9969 +aI9970 +aI9971 +aI9972 +aI9973 +aI9974 +aI9975 +aI9976 +aI9977 +aI9978 +aI9979 +aI9980 +aI9981 +aI9982 +aI9983 +aI9984 +aI9985 +aI9986 +aI9987 +aI9988 +aI9989 +aI9990 +aI9991 +aI9992 +aI9993 +aI9994 +aI9995 +aI9996 +aI9997 +aI9998 +as. \ No newline at end of file diff --git a/2code/22903.dat b/2code/22903.dat new file mode 100644 index 0000000..3ddfe1a Binary files /dev/null and b/2code/22903.dat differ diff --git a/2code/23301.db b/2code/23301.db new file mode 100644 index 0000000..3a102e7 Binary files /dev/null and b/2code/23301.db differ diff --git a/2code/23301.sqlite b/2code/23301.sqlite new file mode 100644 index 0000000..3a102e7 Binary files /dev/null and b/2code/23301.sqlite differ diff --git a/2code/23401.xlsx b/2code/23401.xlsx new file mode 100644 index 0000000..c52b2ff Binary files /dev/null and b/2code/23401.xlsx differ diff --git a/2code/23501.py b/2code/23501.py new file mode 100644 index 0000000..f4b40b2 --- /dev/null +++ b/2code/23501.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +# coding=utf-8 + +#read_file = open("23501.txt") +#write_file = open("23502.txt", "w") + +#try: +# r = read_file.readlines() +# for line in r: +# write_file.write(line) +#finally: +# read_file.close() +# write_file.close() + +with open("23501.txt") as read_file, open("23503.txt", "w") as write_file: + for line in read_file.readlines(): + write_file.write(line) + + diff --git a/2code/23501.txt b/2code/23501.txt new file mode 100644 index 0000000..b325dac --- /dev/null +++ b/2code/23501.txt @@ -0,0 +1,2 @@ +hello laoqi +www.itdiffer.com diff --git a/2code/23502.py b/2code/23502.py new file mode 100644 index 0000000..c286065 --- /dev/null +++ b/2code/23502.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +# coding=utf-8 + +class ContextManagerOpenDemo(object): + def __init__(self, filename, mode): + self.filename = filename + self.mode = mode + + def __enter__(self): + print "Starting the Manager." + self.open_file = open(self.filename, self.mode) + return self.open_file + + #def __exit__(self, *others): + # self.open_file.close() + # print "Exiting the Manager." + + def __exit__(self, exc_type, exc_value, exc_traceback): + #return SyntaxError != exc_type + return False + +with ContextManagerOpenDemo("23501.txt", 'r') as reader: + print "In the Manager." + for line in reader: + print lines + diff --git a/2code/23502.txt b/2code/23502.txt new file mode 100644 index 0000000..b325dac --- /dev/null +++ b/2code/23502.txt @@ -0,0 +1,2 @@ +hello laoqi +www.itdiffer.com diff --git a/2code/23502p3.py b/2code/23502p3.py new file mode 100644 index 0000000..220098e --- /dev/null +++ b/2code/23502p3.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python +# coding=utf-8 + +class ContextManagerOpenDemo(object): + def __init__(self, filename, mode): + self.filename = filename + self.mode = mode + + def __enter__(self): + print("Starting the Manager.") + self.open_file = open(self.filename, self.mode) + return self.open_file + + def __exit__(self, *others): + self.open_file.close() + print("Exiting the Manager.") + + #def __exit__(self, exc_type, exc_value, exc_traceback): + #return SyntaxError != exc_type + #return False + +with ContextManagerOpenDemo("23501.txt", 'r') as reader: +#with ContextManagerOpenDemo(): + print("In the Manager.") + for line in reader: + print(line) + diff --git a/2code/23503.py b/2code/23503.py new file mode 100644 index 0000000..8c27566 --- /dev/null +++ b/2code/23503.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python +# coding=utf-8 + +import cairo +from contextlib import contextmanager + +@contextmanager +def saved(cr): + cr.save() + try: + yield cr + finally: + cr.restore() + +def tree(angle): + cr.move_to(0, 0) + cr.translate(0, -65) + cr.line_to(0, 0) + cr.stroke() + cr.scale(0.72, 0.72) + if angle > 0.72: + for a in [-angle, angle]: + with saved(cr): + cr.rotate(a) + tree(angle * 0.75) + +surf = cairo.ImageSurface(cairo.FORMAT_ARGB32, 280, 204) +cr = cairo.Context(surf) +cr.translate(140, 203) +cr.set_line_width(5) +tree(0.75) +surf.write_to_png('fractal-tree.png') diff --git a/2code/23504.py b/2code/23504.py new file mode 100644 index 0000000..b43f99f --- /dev/null +++ b/2code/23504.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +# coding=utf-8 + +from contextlib import contextmanager + +@contextmanager +def demo(): + print "before yield." + yield "contextmanager demo." + print "after yield." + +with demo() as dd: + print "the word is: %s" % dd + diff --git a/2code/23901.py b/2code/23901.py new file mode 100644 index 0000000..346600f --- /dev/null +++ b/2code/23901.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python + +class RoundFloat(object): + def __init__(self, val): + assert isinstance(val, float), "value must be a float." + self.value = round(val, 2) + + def __str__(self): + return "{:.2f}".format(self.value) + + __repr__ = __str__ + + #def __repr__(self): + # return self.__str__() + +if __name__ == "__main__": + r = RoundFloat(2.185) + print r + print type(r) diff --git a/2code/23901p3.py b/2code/23901p3.py new file mode 100644 index 0000000..6a38fe7 --- /dev/null +++ b/2code/23901p3.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python + +class RoundFloat: + def __init__(self, val): + assert isinstance(val, float), "value must be a float." + self.value = round(val, 2) + + def __str__(self): + return "{:.2f}".format(self.value) + + __repr__ = __str__ + + #def __repr__(self): + # return self.__str__() + +if __name__ == "__main__": + r = RoundFloat(2.0) + print(r) + print(type(r)) diff --git a/2code/24001p3.py b/2code/24001p3.py new file mode 100644 index 0000000..1e6d469 --- /dev/null +++ b/2code/24001p3.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +# coding=utf-8 + +class Rectangle(object): + + def __init__(self): + self.width = 0 + self.length = 0 + + def setSize(self, size): + self.width, self.length = size + def getSize(self): + return self.width, self.length + +if __name__ == "__main__": + r = Rectangle() + r.width = 3 + r.length = 4 + print(r.getSize()) + r.setSize( (30, 40) ) + print(r.width) + print(r.length) diff --git a/2code/24201.py b/2code/24201.py new file mode 100644 index 0000000..7db5964 --- /dev/null +++ b/2code/24201.py @@ -0,0 +1,9 @@ + +def foo(): + a = 3 + def bar(): + return a + return bar + +f = foo() +print f() diff --git a/2code/24202.py b/2code/24202.py new file mode 100644 index 0000000..7062c93 --- /dev/null +++ b/2code/24202.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python +# coding:utf-8 + +def parabola(a, b, c): + def para(x): + return a*x**2 + b*x + c + return para + +p = parabola(2, 3, 4) +print p(5) diff --git a/2code/__init__.py b/2code/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/2code/fractal-tree.png b/2code/fractal-tree.png new file mode 100644 index 0000000..2910b0d Binary files /dev/null and b/2code/fractal-tree.png differ diff --git a/2code/newtemp.py b/2code/newtemp.py new file mode 100644 index 0000000..1e99dab --- /dev/null +++ b/2code/newtemp.py @@ -0,0 +1,4 @@ +#!/usr/bin/env python +# coding=utf-8 + +print "This is a tmp file." diff --git a/2code/pm.py b/2code/pm.py new file mode 100644 index 0000000..ff7fa98 --- /dev/null +++ b/2code/pm.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +# coding=utf-8 + +""" +This is a document of the python module. +""" + +def lang(): + return "python" + +if __name__ == "__main__": + print lang() diff --git a/2code/pm.pyc b/2code/pm.pyc new file mode 100644 index 0000000..84fffb7 Binary files /dev/null and b/2code/pm.pyc differ diff --git a/2code/pp.py b/2code/pp.py new file mode 100644 index 0000000..0ea8c07 --- /dev/null +++ b/2code/pp.py @@ -0,0 +1,13 @@ +# /usr/bin/env python +# coding:utf-8 + +__all__ = ['_private_variable', 'public_teacher'] + +public_variable = "Hello, I am a public variable." +_private_variable = "Hi, I am a private variable." + +def public_teacher(): + print "I am a public teacher, I am from JP." + +def _private_teacher(): + print "I am a private teacher, I am from CN." diff --git a/2code/pp.pyc b/2code/pp.pyc new file mode 100644 index 0000000..9e3f7c0 Binary files /dev/null and b/2code/pp.pyc differ diff --git a/2code/stdout.md b/2code/stdout.md new file mode 100644 index 0000000..96e9190 --- /dev/null +++ b/2code/stdout.md @@ -0,0 +1 @@ +Learn Python: From Beginner to Master diff --git a/2images/20101.png b/2images/20101.png new file mode 100644 index 0000000..d634a99 Binary files /dev/null and b/2images/20101.png differ diff --git a/2images/20102.png b/2images/20102.png new file mode 100644 index 0000000..c8ecaf3 Binary files /dev/null and b/2images/20102.png differ diff --git a/2images/20401.png b/2images/20401.png new file mode 100644 index 0000000..aca4706 Binary files /dev/null and b/2images/20401.png differ diff --git a/2images/20801.png b/2images/20801.png new file mode 100644 index 0000000..6cfae4a Binary files /dev/null and b/2images/20801.png differ diff --git a/2images/20802.png b/2images/20802.png new file mode 100644 index 0000000..ad6adbe Binary files /dev/null and b/2images/20802.png differ diff --git a/2images/20803.png b/2images/20803.png new file mode 100644 index 0000000..ba8c15d Binary files /dev/null and b/2images/20803.png differ diff --git a/2images/21001.png b/2images/21001.png new file mode 100644 index 0000000..f2c8ff1 Binary files /dev/null and b/2images/21001.png differ diff --git a/2images/21002.png b/2images/21002.png new file mode 100644 index 0000000..d085580 Binary files /dev/null and b/2images/21002.png differ diff --git a/2images/22301.jpg b/2images/22301.jpg new file mode 100644 index 0000000..ffb616f Binary files /dev/null and b/2images/22301.jpg differ diff --git a/2images/22302.jpg b/2images/22302.jpg new file mode 100644 index 0000000..65c1453 Binary files /dev/null and b/2images/22302.jpg differ diff --git a/2images/22303.jpg b/2images/22303.jpg new file mode 100644 index 0000000..8f3efa7 Binary files /dev/null and b/2images/22303.jpg differ diff --git a/2images/22304.jpg b/2images/22304.jpg new file mode 100644 index 0000000..98f7306 Binary files /dev/null and b/2images/22304.jpg differ diff --git a/2images/22305.jpg b/2images/22305.jpg new file mode 100644 index 0000000..a181188 Binary files /dev/null and b/2images/22305.jpg differ diff --git a/2images/22306.jpg b/2images/22306.jpg new file mode 100644 index 0000000..473bbbe Binary files /dev/null and b/2images/22306.jpg differ diff --git a/2images/22307.jpg b/2images/22307.jpg new file mode 100644 index 0000000..bd69f78 Binary files /dev/null and b/2images/22307.jpg differ diff --git a/2images/22308.jpg b/2images/22308.jpg new file mode 100644 index 0000000..09ae326 Binary files /dev/null and b/2images/22308.jpg differ diff --git a/2images/22309.jpg b/2images/22309.jpg new file mode 100644 index 0000000..a3e6f17 Binary files /dev/null and b/2images/22309.jpg differ diff --git a/2images/22310.jpg b/2images/22310.jpg new file mode 100644 index 0000000..ba3a06d Binary files /dev/null and b/2images/22310.jpg differ diff --git a/2images/22311.jpg b/2images/22311.jpg new file mode 100644 index 0000000..fe35199 Binary files /dev/null and b/2images/22311.jpg differ diff --git a/2images/22501.jpg b/2images/22501.jpg new file mode 100644 index 0000000..f79ba00 Binary files /dev/null and b/2images/22501.jpg differ diff --git a/2images/22601.jpg b/2images/22601.jpg new file mode 100644 index 0000000..9538cf1 Binary files /dev/null and b/2images/22601.jpg differ diff --git a/2images/23201.jpg b/2images/23201.jpg new file mode 100644 index 0000000..ea6db16 Binary files /dev/null and b/2images/23201.jpg differ diff --git a/2images/23401.jpg b/2images/23401.jpg new file mode 100644 index 0000000..726934f Binary files /dev/null and b/2images/23401.jpg differ diff --git a/2images/23402.jpg b/2images/23402.jpg new file mode 100644 index 0000000..00ce8f4 Binary files /dev/null and b/2images/23402.jpg differ diff --git a/3code/31301.py b/3code/31301.py new file mode 100644 index 0000000..03c35c6 --- /dev/null +++ b/3code/31301.py @@ -0,0 +1,37 @@ +#! /usr/bin/env python +# coding = utf-8 + +import pandas +import pandas.io.data +import datetime +import urllib2 +import csv + +YAHOO = "http://download.finance.yahoo.com/d/quotes.csv?s=%s&f=sd1ohgl1vl1" + +def get_quote_today(symbol): + response = urllib2.urlopen(YAHOO % symbol) + reader = csv.reader(response, delimiter=",", quotechar='"') + for row in reader: + if row[0] == symbol: + return row + +def main(): + symbol = "BABA" + + history = pandas.io.data.DataReader(symbol, "yahoo", start="2014/11/11") + print history.tail(3) + + today = datetime.date.today() + df = pandas.DataFrame( columns=["Open", "High", "Low", "Close", "Volume", "Adj Close"], dtype=float) + + row = get_quote_today(symbol) + df.ix[0] = map(float, row[2:]) + + history = history.append(df) + + print "today is %s" % today + print history.tail(2) + +if __name__ == "__main__": + main() diff --git a/3code/hello.py b/3code/hello.py new file mode 100644 index 0000000..0b7e126 --- /dev/null +++ b/3code/hello.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +# coding=utf-8 + +import tornado.httpserver +import tornado.ioloop +import tornado.options +import tornado.web + +from tornado.options import define, options +define("port", default=8000, help="run on the given port", type=int) + +class IndexHandler(tornado.web.RequestHandler): + def get(self): + greeting = self.get_argument('greeting', 'Helloi World') + self.write(greeting + '\nwelcome you to read: www.itdiffer.com') + +if __name__ == "__main__": + tornado.options.parse_command_line() + app = tornado.web.Application(handlers=[(r"/", IndexHandler)]) + http_server = tornado.httpserver.HTTPServer(app) + http_server.listen(options.port) + tornado.ioloop.IOLoop.instance().start() diff --git a/3code/marks.csv b/3code/marks.csv new file mode 100644 index 0000000..2aedd49 --- /dev/null +++ b/3code/marks.csv @@ -0,0 +1,5 @@ +name,physics,python,math,english +Google,100,100,25,12 +Facebook,45,54,44,88 +Twitter,54,76,13,91 +Yahoo,54,452,26,100 diff --git a/3code/marks.xlsx b/3code/marks.xlsx new file mode 100644 index 0000000..02e2dff Binary files /dev/null and b/3code/marks.xlsx differ diff --git a/3code/web/application.py b/3code/web/application.py new file mode 100644 index 0000000..67030df --- /dev/null +++ b/3code/web/application.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +# coding=utf-8 + +from url import url + +import tornado.web +import os + +setting = dict( + template_path = os.path.join(os.path.dirname(__file__), "templates"), + static_path = os.path.join(os.path.dirname(__file__), "statics"), + cookie_secret = "bZJc2sWbQLKos6GkHn/VB9oXwQt8S0R0kRvJ5/xJ89E=", + xsrf_cookies = True, + login_url = '/', +) +application = tornado.web.Application( + handlers = url, + **setting +) diff --git a/3code/web/application.pyc b/3code/web/application.pyc new file mode 100644 index 0000000..f701403 Binary files /dev/null and b/3code/web/application.pyc differ diff --git a/3code/web/handlers/__init__.py b/3code/web/handlers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/3code/web/handlers/__init__.pyc b/3code/web/handlers/__init__.pyc new file mode 100644 index 0000000..e48b75b Binary files /dev/null and b/3code/web/handlers/__init__.pyc differ diff --git a/3code/web/handlers/base.py b/3code/web/handlers/base.py new file mode 100644 index 0000000..2eb5fbf --- /dev/null +++ b/3code/web/handlers/base.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python +# coding=utf-8 + +import tornado.web + +class BaseHandler(tornado.web.RequestHandler): + def get_current_user(self): + return self.get_secure_cookie("user") + + diff --git a/3code/web/handlers/base.pyc b/3code/web/handlers/base.pyc new file mode 100644 index 0000000..737b3eb Binary files /dev/null and b/3code/web/handlers/base.pyc differ diff --git a/3code/web/handlers/index.py b/3code/web/handlers/index.py new file mode 100644 index 0000000..7626e38 --- /dev/null +++ b/3code/web/handlers/index.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# coding=utf-8 + +#import tornado.web +import tornado.escape +import methods.readdb as mrd +from base import BaseHandler + +class IndexHandler(BaseHandler): + def get(self): + usernames = mrd.select_columns(table="users",column="username") + one_user = usernames[0][0] + self.render("index.html", user=one_user) + + def post(self): + username = self.get_argument("username") + password = self.get_argument("password") + user_infos = mrd.select_table(table="users",column="*",condition="username",value=username) + if user_infos: + db_pwd = user_infos[0][2] + if db_pwd == password: + #self.set_secure_cookie('user', username) + self.set_current_user(username) + self.write(username) + else: + self.write("-1") + else: + self.write("-1") + + def set_current_user(self, user): + if user: + self.set_secure_cookie('user', tornado.escape.json_encode(user)) + #self.set_secure_cookie('user', user) + else: + self.clear_cookie("user") + +class ErrorHandler(BaseHandler): + def get(self): + self.render("error.html") + +class RegisterHandler(BaseHandler): + def get(self): + self.render("register.html") + + def post(self): + pass diff --git a/3code/web/handlers/index.pyc b/3code/web/handlers/index.pyc new file mode 100644 index 0000000..074f283 Binary files /dev/null and b/3code/web/handlers/index.pyc differ diff --git a/3code/web/handlers/sleep.py b/3code/web/handlers/sleep.py new file mode 100644 index 0000000..7fcb0e9 --- /dev/null +++ b/3code/web/handlers/sleep.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python +# coding=utf-8 + +from base import BaseHandler + +import time + +class SleepHandler(BaseHandler): + def get(self): + time.sleep(17) + self.render("sleep.html") + +class SeeHandler(BaseHandler): + def get(self): + self.render("see.html") diff --git a/3code/web/handlers/sleep.pyc b/3code/web/handlers/sleep.pyc new file mode 100644 index 0000000..213dc6c Binary files /dev/null and b/3code/web/handlers/sleep.pyc differ diff --git a/3code/web/handlers/user.py b/3code/web/handlers/user.py new file mode 100644 index 0000000..faddb26 --- /dev/null +++ b/3code/web/handlers/user.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +# coding=utf-8 + +import tornado.web +import tornado.escape +import methods.readdb as mrd +from base import BaseHandler + +class UserHandler(BaseHandler): + @tornado.web.authenticated + def get(self): + #username = self.get_argument("user") + username = tornado.escape.json_decode(self.current_user) + print username + print type(username) + user_infos = mrd.select_table(table="users",column="*",condition="username",value=username) + print user_infos + self.render("user.html", users = user_infos) diff --git a/3code/web/handlers/user.pyc b/3code/web/handlers/user.pyc new file mode 100644 index 0000000..4b77f8d Binary files /dev/null and b/3code/web/handlers/user.pyc differ diff --git a/3code/web/methods/__init__.py b/3code/web/methods/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/3code/web/methods/__init__.pyc b/3code/web/methods/__init__.pyc new file mode 100644 index 0000000..4567084 Binary files /dev/null and b/3code/web/methods/__init__.pyc differ diff --git a/3code/web/methods/db.py b/3code/web/methods/db.py new file mode 100644 index 0000000..56ad749 --- /dev/null +++ b/3code/web/methods/db.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python +# coding=utf-8 + +import MySQLdb + +conn = MySQLdb.connect(host="localhost", user="root", passwd="123123", db="qiwsirtest", port=3306, charset="utf8") + +cur = conn.cursor() diff --git a/3code/web/methods/db.pyc b/3code/web/methods/db.pyc new file mode 100644 index 0000000..42b2804 Binary files /dev/null and b/3code/web/methods/db.pyc differ diff --git a/3code/web/methods/readdb.py b/3code/web/methods/readdb.py new file mode 100644 index 0000000..cb47eda --- /dev/null +++ b/3code/web/methods/readdb.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +# coding=utf-8 + +from db import * + +def select_table(table, column, condition, value ): + sql = "select " + column + " from " + table + " where " + condition + "='" + value + "'" + cur.execute(sql) + lines = cur.fetchall() + return lines + + +def select_columns(table, column ): + sql = "select " + column + " from " + table + cur.execute(sql) + lines = cur.fetchall() + return lines + diff --git a/3code/web/methods/readdb.pyc b/3code/web/methods/readdb.pyc new file mode 100644 index 0000000..5ef029a Binary files /dev/null and b/3code/web/methods/readdb.pyc differ diff --git a/3code/web/server.py b/3code/web/server.py new file mode 100644 index 0000000..9b35bbc --- /dev/null +++ b/3code/web/server.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +# coding=utf-8 + +import tornado.ioloop +import tornado.options +import tornado.httpserver + +from application import application + +from tornado.options import define, options + +define("port", default = 8000, help = "run on the given port", type = int) + +def main(): + tornado.options.parse_command_line() + http_server = tornado.httpserver.HTTPServer(application) + http_server.listen(options.port) + + print "Development server is running at http://127.0.0.1:%s" % options.port + print "Quit the server with Control-C" + + tornado.ioloop.IOLoop.instance().start() + +if __name__ == "__main__": + main() diff --git a/3code/web/statics/css/style.css b/3code/web/statics/css/style.css new file mode 100644 index 0000000..7efd3c0 --- /dev/null +++ b/3code/web/statics/css/style.css @@ -0,0 +1,4 @@ + +body { + color:red; +} diff --git a/3code/web/statics/js/jquery.min.js b/3code/web/statics/js/jquery.min.js new file mode 100644 index 0000000..0f60b7b --- /dev/null +++ b/3code/web/statics/js/jquery.min.js @@ -0,0 +1,5 @@ +/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; + +return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/\s*$/g,ra={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:k.htmlSerialize?[0,"",""]:[1,"X
","
"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?""!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("