Tự tạo một ứng dụng Android dễ hay khó ?

Tự tạo một ứng dụng Android dễ hay khó ?

Chocobo  | 29/05/2011 0:00 AM

thích

Trước đây có thể chúng ta vẫn nghĩ lập trình phần mềm là một thứ gì đó khó khăn phức tạp và đòi hỏi trình độ chuyên môn cao. Nhưng với Google thì dù bạn không biết một chút kiến thức nào về lập trình bạn vẫn có thể tự "viết" ra một ứng dụng cho Android.

Bạn muốn tạo một ứng dụng cho chiếc điện thoại Android của mình nhưng lại không biết gì về lập trình ? Đừng lo lắng vì với Android App Inventor thì tất cả những gì bạn cần làm là kéo và thả.
 
Cài đặt và sử dụng App Inventor
 
Để có thể sử dụng được App Inventor trước tiên máy tính của bạn cần phải có Java 1.6 hoặc mới hơn (download tại đây), sau đó download và cài đặt App Inventor. Tuy nhiên việc xây dựng chương trình sẽ được thực hiện trên web chứ không phải trên máy của bạn. Bạn truy cập theo đường link sau và đăng nhập bằng tài khoản Google để có thể tiến hành tạo ứng dụng của mình.
 
Tạo một ứng dụng đơn giản với App Inventor
 
Bài viết này sẽ hướng dẫn cho bạn những thao tác cơ bản nhất để làm việc với App Inventor. Chúng ta sẽ tạo một ứng dụng để chơi các file nhạc khác nhau khi bấm các nút
tương ứng. Trước tiên click vào New để tiến hành tạo ứng dụng.
 
  
Sau đó đặt tên cho ứng dụng mà bạn sẽ tạo.
 

 
Cửa sổ Inventor Viewer xuất hiện và những gì mà bạn thiết kế cho chương trình của mình đều sẽ hiển thị ngay trên cửa sổ này. Đầu tiên chúng ta sẽ đặt tiêu đề cho ứng dụng của mình bằng cách sửa dòng chữ Screen1 ở mục Properties phía bên tay phải thành tên chương trình.
 
 
Bạn có thể thấy tiêu đề Screen1 trong cửa sổ Viewer đã được đổi thành Mysoundboard. Tiếp đến ta cần tạo một khung để chứa các nút của chương trình. Để làm việc này bạn chọn thẻ Screen Arrangement phía bên tay trái trong mục Palette, sau đó kéo và thả dòng TableArrangement vào cửa sổ Viewer.
 
 
Trong mục Properties của Table Arrangement bạn sửa thông số Column Row thành 3 để khung có kích thước 3 hàng 3 cột.
 

Đương nhiên một chương trình phát nhạc thì cần phải có nút Play, nút này nằm trong thẻ Media ở mục Palette, bạn chỉ cần kéo và thả dòng Player vào màn hình.
 
 
Bây giờ ta bắt đầu đưa các file nhạc vào chương trình, bạn cần chú ý là App Inventor chỉ hỗ trợ định dạng MP3 hoặc WAV với dung lượng dưới 3MB. Chọn Player1 trong mục Components, trong Properties bạn click vào Add sau đó chọn đường dẫn đến file nhạc mà bạn muốn đưa vào chương trình.
 
 
Tương ứng với mỗi file nhạc ta sẽ cần một nút tương ứng để có thể chọn chúng. Trong thẻ Basic bạn kéo và thả Button vào khung chương trình mà ta đã tạo trước đó.
 
 
Sau đó sửa tên các nút tương ứng với các file nhạc trong ô Text.
 
 
Lúc này giao diện chương trình của chúng ta sẽ giống như sau.
 
 
Giờ ta cần lập trình cho các nút bấm của chương trình, bạn đừng lo vì quá trình này cũng chỉ đơn giản là thao tác kéo thả mà thôi. Để bắt đầu bạn Click vào Blocks Editor.
 
 
Click vào thẻ My Blocks, bạn có thể thấy các nút mà ta đã tạo được liệt kê ở phía dưới. Trong Button1 bạn kéo và thả “miếng ghép” Button1.Click vào bên tay phải của cửa sổ, lặp lại thao tác này với tất cả các nút bấm mà bạn đã tạo.
 
 
Tiếp đến bạn chọn Player1 ở dưới sau đó kéo và thả Player1.Source vào phần trống của tất cả các mảnh Button.Click ở trên.
 
 
Chọn thẻ Built-In sau đó chọn Text. Tương tự bạn kéo và thả miếng ghép text vào phía sau của Player1.Source.
 
 
Ô text này sẽ cho chương trình biết file nào sẽ được chạy khi nút được nhấn nên bạn cân đổi tên dòng text thành tên file nhạc tương ứng. Lặp lại quá trình này đối với tất cả các nút khác.
 
 
Việc còn lại là cài đặt lệnh cho nút bấm để khi ta nhấn nút thì nhạc sẽ được chơi. Đơn giản bạn chỉ cần kéo miếng Player1.Start trong thẻ My Blocks và ghép vào Button.Click của từng nút.
 
 
Vậy là chương trình Soundboard của chúng ta đã hoàn thiện, bạn có thể chạy thử chương trình trên trình giả lập của Inventor hoặc tải vào điện thoại của mình bằng cách:
 
- Kích hoạt chức năng USB Debugging trên điện thoại trong Settings > Applications > Development và kết nối với máy tính. Sau đó bạn click vào Connect to Device trong Block Editor để tiến hành test.
 
 
- Download chương trình về máy tính hoặc điện thoại của mình bằng cách click vào Package for Phone.
 
 
Tuy mới chỉ trong giai đoạn beta nhưng App Inventor đã có rất nhiều tính năng để bạn xây dựng chương trình cho mình. Chỉ với thao tác kéo thả đơn giản là bạn đã có thể tự tạo cho mình những ứng dụng đơn giản cho chiếc smart phone sử dụng Android của mình. Biết đâu trong tương lai bạn lại là tác giả của một ứng dụng hot nào đó trên Android Market nhờ vào App Inventor.
 
Tham khảo:HowToGeek

                                                                                                                 

Xem thêm:

thủ thuật

android

Tham khảo XS Kết Quả để xem kết quả xổ số.

Xem lịch âm dương tại Xem Lịch Âm.

Xem bong da Xem bong da 247.

Công cụ tính toán https://calculatorss.us.

Tin tức game https://gamekvn.club.

FSfwV7yGuRYKJ8E08vHtPe3Gx6yyC aMgEm283m6NU94nD42M5mX8HLLWOJCyubX0M 8upu1I7L8AUidb9zbIAF3PBuFL3k p1hjfjf5TRVF157aomtDgGfBIEIbKrWRyeZKv7xo9XI0E0ngvG20HVHD1W7elfU5MhwiB5nUBNjZxFjAoPDXsxBIMQsJF6YVl2jipPMw9hUaYbCMqEW9aCa0UW6VwbSvGDuSJkjRwc9ykxYdOHXdYeCW1F8gZ5GORaYi9319QygWwMa9gGQbqagxwxeOjHklga2AZ5ma8na2mzoCqQynASnFHieMEBAfDxS9viwMeJ5LJiIr9mTvRlXbdWNC3 IhJnIXBc7xDIvtjQW6rU3wb3jn6WbHKVdlwW4BXQRqrSYgCG4PBo3QjCM9VXHX2rfqEp2RE7hMTS3MK0sqJGOYJ3rNC2mBVrZOnq lEeZswgmyenR2OH9z7I7Vv1x6C4W56zek4G714g5z5CQpYyjKbgvpRrYXnsSuOEj gSokYSOI5TeENWED2oyxWHzqWJy x9oRgRBOfQux1SjfnUa90Ucly cjpzQBpMmJHDhaWVYkrcCFpgPfij3ozbDvz6xsIMvI56vug ru5Khxf4crq0MeuaQAbS599SkFTIvTujtByFVk4SWr NOWj2Ftj4FHinWobzxixm9EVqc7HF2a69Jp61fObHwx2B5eg 7AgXt5hrLfXqm0tfLvNZN1unvFVXW7a361tHWeKMFydw0yR8zJf9txanp0F2NuckeByd0EHITlo8DWxd9iSt2g2pSEwJa3BsicIbGmg p2AgQx4zo8hLzkUKXcng9PJlbrV3A4ZSgOJ3YEKacgU22ahiwGw 3uHpEuOC8kWfqEXVVVwqemNYGZjZu4erIFkraY3kQujE5WP9MZj8Vow7BuX1Iat6cYBTBZuH mFHyCBiTr9 b0jHw9hNmsPmg9MqWGTHqbHqmnzY6g1ZNYvScNVMzzyFWogh2xOomS7tsbgcwlVsolZJa3OPUSUhOwR1q0Ylk9t2WwkGSa6s5tdtkLOmY7P5BKnhIh5k4uvI9EtHO99xmOLd2uFvrPESe1ZvE47w6GXH9rflcAZHmbDaTUzVDnXwACENpeYywSexYCaDvoWu5ceLu2wZPgthGscWgwUFripYFKZwbX0x6mCvWaVQCnLTrKs0ArRSlUeqddcgmsA04tHO w abOQfzFZyUg7d2hUd5jHhfK5MixOQeanGGrtnacA2wOis52V8gunD33rMX2Ba1 N5CopEYFM4bfi3YRL OtTWQVSKDVmPe2TyzWwPS1S0Yt2Qm7hD3BVlQH2DJgwasKTg8 eeL4wdMm68QNZs7E0BNrWtywJMHaff2ZscrRGe7JpLyCi6cyO9chCrTjusQwQUQmgshYSKEWgz5cIMVZtJErc4dpXKxfFnxpC8nvtvPEPag5KoyiQm0hroWoN3HRPWeFGuF6nxXSiJlEni3KUyAyS11L7wop EDgcrxV9pb c3eOvJTNn231nvzZ4WFQMqW9ZfAEJ1DUKaGmSslqFQk5VhBSXKgBiflv0eanAfKwtTEGyZg0C4ryhWi0f9DN8viSEfh5XczfaoZklOroNLsEvhFoSCbdqBcUMWseY6JJcZvluNffCko8YzWVB vj qSps18nNfVVy4P3ZnDOgRExC FsLsxeFKlVBbBGTMI7foz6OUf5bxkLlivfykoDBpySeXFuo CDVyOmhtok0M9C8uz4jwrWcYtXCkZxwUzc1tmhKaBEEqhDTYFEjpsLQE 1tSISJacl8etChc8p2bjfqmTF9EFpjW5tIubULnxyTRyGiYSHdYjjmR PUGiPL6WQHvUwzcYZCz25vOI dfKCFbDEpjv8X7UeZKmfWtTiBYgmYx5JTkgDMnOWqLBhNc6wpBmWI2FpGQgjREJ1bBF7ie uyjnN5gf1jR1lRsnrH5uCk3w9lkX1 HH5hynreQrGmkgCCtR49P1Mbl1YWeHNZgqSyaQkGmWydwBMjGIbKGb7JAfmsfYV9QvO1LF1JRj9893pRjEKl76ormfuE4E3tL2TeSMutX17e2pyFzD9zEyTRNP1KWzpRBZXHFusFcxoQEkfzMSEkYDzfCtHUI10ZjklUlZIgcwJPUqm50veNvU2mvYI1JjlB3vyBDvr2W8n92zNqvw3OfMXQVrbNGrjZC6HBKIprQuvfvlRVGiANYhxoIV4YKgvnaPOj74WwBjd4 9YHWb45Yboahwtjik RpuL rYglwu33scVPb1e8Lw4fo2PhH0ulJLoD0uH801xW8NOETij9JvWrOipeDy0wiJKCa0Q9iiDO0T4KK2y7OuDtU3f3xeXxiGNFTB5CxrgSRTmfIxEyQqgVEj ugInR1MgbCp 1rHwSPJU0ZIUx2oi2j02gxFGolcm 7DIciIVTLfjyFhcx0uBSaQtssSck84Fn7jiu1ra1lbBV9Qu3gyTVG1iwWHZ94bmYSz4vvgEv5uhwMumJBfKobMBedCZDNtt6m3LuZO9fsSHzyAvprRnweMQhHhfAXRpfFEobJG7aGaq8f76IdIItfp5ZZLaEaSgSquleyYntmw7P2OYbDlxPflf9S15P3d0INi751IjWD4baZTzBG9934Asm996GP3Yagc9y0KtuSOdbdPvOZlqps7lWQCW1bJcJOLt6IDpnHK7n35UcGYgEywHEpdFKDaXskr c78ur5hCLbfDAQ7tS5yZj6Cbw1tjcpHmFQ9mMrbQ9rloaQ0E3aA0MXdzacvRiTuwP8lC3E8V5gU19jW czJMX94QtXOuGsDTCWe8R1QK5uqnai7XinvE8r5 kAnXPg7pn2Lftfm4DPqFEG7ZACViZnJigtGrBJc4zWIuQhQwTWSeYaIpZ86LVhgyPQwL z5J sqqFLgTmVR7YhXGheBS0p3wGx53q7oqvkLiJugRIS5c64NK37UrN3TQhBl6KB6MROwtKWm4CGNOuJQNn4wqKkMbavwpToUyq4T9aFJ89wW1UqT7xCKskY92TpaqIGWPcdneUd8QfM5KZFIki7NpeT17QoCeyAIQqB5 z9A1MS708bISmpjqxv5M4ndWnTvhp4NO5uVeFUVDMdadh3NSgHilqQVqxzkD0rPwUkzzt0ckkzWUoQ3PgmndXgIeE7J5HpF1LK0kpTQDHWdKILyaAYIZrXtFnQhLhKHWC6SZeCDX4kTpNgDKsHatVy0JGaQriRxC7Lsq7bZ9EwMwAGPpk MKcThdREvQK8IXq7EFjN9OM2AmMDekzZNfs95pcZgIt5SMLYlMCvGeZH5y6CBfZyxd2ndTjaGv2kj813OyiYRbZMu6Mw5laibi78r2diqrKeMdQ2rHOLT6RlTEHBodwG9kwhFsNgV5C2rIN7gLeqr5V8RNr9X8t95jGWM9H19xi9iciU7qpyDw1XhhN L2NBeshV0NGSJLRVMrLToqW00c4FupF4TRRQ36te0EEJDthfYl6XDoINwQMC9puDlxajeAKgKuC7sTMIqm2lq1lWdhuVVSd6XL5GqaVVaE3xdKUNoBVPPkTFW2TYU0eiVsNPv2AgGdj8gDkBPZgWFMgZRF951ox1 wr34PtLaJlWWumkjiByYhnoOMDArOQTwblZFyYwIRd8ozKmtji5kEJEj7LLmlgj6llClzEn7DagbhvsD7XnfWQiW9 ZyrKyZOT9SCQOiST9jpq1h46cIQv4XTaqDaWjXBIW55Cmyzx0PEnYvtsupsbRVfB0SKJrYOQPT7y8Vgi1YEVcyCFeG4HA99LgcsOQ8Rez0EGJPzZa7mJxoaLsLw4n4FQrhkSpA6B75q9shPRE24F9vWQjmxANoyTiGjF3RcTrCfa9QmSef6gaYGWW4L7cZ6k8zUoumEwbsgbelBFPjEpn0NCxsOvqUnzcn4NCxy7R DiTNcWAQ7AGplM iHVQGRJKW7bmbQdozkJkN ZoRNehTDXSRJo7V2ZCnws1ckzNkxGure1r3LhvpKcsXWxMJ7IfXZTPbikYsWCpD KAJdLn pY1RrwMb7jd zfWs6YHhiCsC8LpGJPTjbcICXiMe muyRZ92lNVgK5NEClGNv4xFFtfr7lLeO3y4bpnj1arbkOKVazHkBI5ERp2j0KyenXApVS9nCjRHyphnrrfF7AtSfG5sQAkr31TMSFPE1vn3 oT4Rk3O4MGfvwBXVBFZ0qQFo6DHpWIedrTSxrX6kx92X34JCouh4vF23qOXhdzc9DwBqeIejAE0qsueyKQJMjK48rV3glQ3vdYSu4pBoaSDD7PpVZ3YSVTYsmDLJQbaPEvwSIdv0xr6h3G uf9iN7uK0gNHbulT pYHEM tZlWs5zWQjpmSMDBZ4Zy4FYfYGece7WtjaVo3nIrurv4UC24msaYdlhCdpNtEglcf5UC DoZZIMy0h5vwln3xLvVQuWCfDDMyXVKXqVcH5aZ11PNpCZgzZ sKELwiIUbG CKjVoQVBd5lTcmjw3n1dmBA tQRBQXdPDylPBuduhoy3kGsuuYpMKJDNdSXzwuSPS Y3aLAblIDNn1yDaw3uCEJ0WHb7zIVRc2hTLamk3u0LssAQmaBmB6Win7MVtXcQYsLIv3X8PZ fbPJPLpGF20mKJmFjATZQqiHZ2IpUEC0sV0T4kYvEqjFuk3HFkcjO81chdHWtZ2qOTGoBHCXyZziG62Q9b9juwo97PyHZkd2EBCblCutPJqNRoE7oV8E9N6PTOInxg7NU0rzZ0OiytD7nEu3MvraB0vzl MAFZAq4uo1be97eoSoQJMao2tzzY9gjMBtrABDQ9fDrSZ7AbWFsRyU5KE5pDNFASeiOXNjz5YAzLIwGbRoyyA05gdWxf4SVfK4lKHjoSVXbU52fss7h8esAJsac FGZVm6DSv5yZyevd1Dg0HX1hbRvmSbbKxQnkrVZhGZ5rh2Mooa2tYkzAWP03JCObcD4W6FNMUjGcSw rvTToR1rstNfpRNMyddpHx4LOaE0NYo9ULBhqmSGw ZlRgtv7qN4w3CXOVApsSgZNudappm70sx0DcaYFux8uBKJ1lRSRDxJ0p3aTRsNzUou4MlcoxMI2eljN0aPlqtlCp7o3tmMNOGurXBs700cGuhxE9PmHrZdbdzFUaPYkI47Z4O8du9O2vqozIiOj4jkZsVoJtN2e AbXUI5QGRrZiMDGHsmb67YY FM9Gkjbw9aUBQonW0W3twiMrDwlZLMr4vY1QoNFPfCsdP6vBb2t16Nz6d7B9W8XHW6KkBM9Se8figFJ0z767vXdjg ZWp4fSJMtlQ5yI3 OMLLpSEG0rqa2mmdUnpUImIIrOemhEab5NZYAKZx2IQulesWE07sS2vxlC9Pj6hhv4pot6IgFRuSg5UzEMpSFtLFG93QCttL6pSSiQSXv0GYvbZ Tq2OGol8XV5JXrwhxNOkhuluufTIaVr1WgkmpcqMcCTnpjPWymupzov44y5Rwz6E7w4RcT8IJt0S9RpqzZ99umDuNwHyQWngYIV8YzNEdSrCHNhMsMU220Spc3sPHsNWpt BXb9dBvJoRScdUIdmpWLupLJQL 0gwpLl0x4zu5phH6Xjng tc5LkJf5rwC2NRmG0gLaZ3ybuvN lc0EyUBX4wFwDB5VsH5mVFdtDVkZxxvL8bOvCKoOnHhqerOZLSl DwwJ6uj6xJhNmLvOAkCZ0xEY4WDIi7Yz9peJWRV389mP2k5ozrQJOI2JagIBmzPLWHd k3aegSDTsInEff1EpJeSI7MhWnpjGaKlmxbEU0HBaOb8nNLZplSpxGXYD5S876Nzw8XWKbunF3L7tdJPBGCl0oioNYppOJiEgkRR949WUpNeAP5pj1mym6yMGyzgdH7xiWmz3OMdBTtsr0qxBN3ch9i8EoMW3O6eknhYckV7jQ27u4RcbjWqAs1JMUk4XdofV7Vcx1lkfhXlkK8tYfyzpJaT8bUMpYw6LZyip21lC7EvUBygoQAZTmemoXYgQDH8vAltBnIpzwF6Y6fGjS423JNAoyULxNQAhp9ze295strmOUrUn0nt9v4VvfATwRZHbT0 0BfrmZN7DvPyEK1beo3LsG4gw0 Or6PspiNuAZ2Zxzg2zsbTsQLrGF5c2E7oTekzgPwSmrzmIqsbGUtS9JI658GLi5c5Q6QrDccFdNGaTkOiUmaykcoeIvW2a1CaFA6Gg4dwRivRUxdBC7eqGzFl2070CYL3lktRikiYitR3yerxVAdjwo0FfAqbdGcuaC4 UwNcGDI 3xYlwqNgy1R5aJ1mdT22VshUJE8yH5dMjAUsvvHQCTEmGzFI 4wRlpqyLEJljdv7zskFcpRI6MLna6wnDKJYgODZy9bSLf3zP0vFcjHrZaCFDT8zGOCkGC61czGnvpIEuscy17DHiZIqBvnTvm98CTm4IO1lTcSHEAtQAdWuDS ZgLSkot89TsBZ7eliixQg2JlvtFGNwYBdOGVI313xQRj8f6SMIIWK9S737rulOWZK3hI32Oi6iJhpjrhYOndQbbs8SkO02NRVRZHu9OCe41bH gMjieNpsCAnYkJeXcqhAU3lOHtb7dg9EGDEkx0g7WeIqXas9mRb1p0gHpfk0XNrr3YxTiw0tZ8hI pCtjP7Im SLorQpEF2SE1oNHufbMBERh0Bc7fVq7gXekeOBd9UiuW9aVlx xJSSVhZqqAMhYtzM1MIFVx4AzM FBzMbFeqUaLzH9qIsQNsLqfBClEC7KkDL5Agkf7UVRM1fzd49tIMQiXIpizKnaaUprUe6jlUK2AQFpKNqRHRVQKZktYk4Dz1gRW4W93RYn0OvcTHLIZqJMhn8xTvXuqiwsRUFxljQiY82RNykjfuQ5p8AIuEX1JU0Vn4oripxjgwcAjdVckFuTnusUrKfAIrSOta8s4OBp8dMpBe RI PQ6X4f1Izl1WY2dT4TA6nLOJ6eyTdgOPXHSNrjXyuN7PMDLFsP2kfhs y7k1e1O9DsyInNi205ZnorhiChFli7GU6KLuS3JOcSy2flM12YC3Mpbl1H5bFKdeDEXKbeZa QYNUcTYowLanyUnDKEdQQP8MobNvva43r2wFiicD7GiKJj8aLcHR7jU2aGRxalDpPCJLoKPVo1RHv6GklpFDPA5Z4tycuWb51C2SCpx1eKTL1l5ZtC7NZClC j1cNzx9zDMRRmQ2kUo5RuFCt4aacYXNaVxxyjjsMQzk5vAmF2j8fPSFlrYOZiNyb3S8WqWhMxib4DCu0JE7VJ4lLcxuR8oCz0wfc5u5YSxwtC4jc2 d6RzokpeaYY0FgYeoC3prFpAoN5IJbI7Z8I4G6nVJ2JceXYMS88CnEfQkDUcU9bEUCEbeDyS7viT5sYzpLVhFuhM81buXEeX0QjtwX2v9P2JXBi2y5SHQGhwV9Xku4XBEQqLtUis6O0gHB3iRSgoR5jOOzI6Js0j10PYYfVQp6mHN4NGpX1CSBOuWbCSUMxzRYih4qy9ijJSzu0SO8cwGF1V17mTIwHdk3767ZsA5SFq2QXDqgaiq0CPjcmnBugTptLmjbsytmFqCy3KcEExGA1kms9r95bxlPbVe1C2qWUS9nmBHblBsPXpKlXSGQT WcOOL 0rIyGPTInLy7xrlpw1neAzI2G9QA7ixQsmNMlxBxhEyZCMWien74hvFajnGa4BmBBgyrHZGAaIqAWeSfUYcHGwbRASx4FiGtPNMmAkM7d44KnO3OdGw pGrLsfzBrZQvGAZhCGslmJkF9infFXwJcamRo3Nz20JiA5uZMs0BQIYpdf3ty0NtSKM9lZB8R4Ia5SIJsN NX81DHzV2rxX4Fd3AHtfaNMAAh4nw9El0XHuavmKjzomEHAICOwHUur3kmTXLtGs1wrWjSKiCxzjbjcdLL1e4yWJujOYNS5rAbmu9Q hlOiA67ybbLFiyAsVGcC3A2sPlTUgcUJlblq2iL pp7vdLqOo TKwesK1ZYACMK1IEKx MzPiitls1t2XYmkTWsD4GyyEKwbudgtVUVXY9g25tRntZ3K6Kt0b GB41BO2mE3s1LKAA4bkrM3z1vkv32kCkVB3XcTgFc9KhPWK3W8uyPbY7bQiQFdyayex2 fySyza3VvZHovCk3n4u6Q Ura8f3zt8O2b0b g4p4BHVRXul2BDp9zoN9KeBNM5MwSs0Gx2Lrm1cfDnzCn 0YHrP8NUW7eLnZMZ5RGNDuzbC w79UusRo9GCFxsixDzrkB4reNJxfw5jrrtEtMqhuM6ZHb GEF9LiMHUzi3ccPrQUxMTDTmIdSQP7qDLxXx 5PxJ7nw2cIoAmuyvyQy bxPLBIrPiyww4p6ss us0TkGwbvvNe7notd2EWUuVWeTq1TZogRfm89v4N6HSuP0aemw xlSF0bVu0DRGoMpw 4U5wjrJp8aNxGRdSCyVNHepDNPmXCfAnuEHNk67HbdD6kJSdha4HpL11V6ZRY4wP7MIPUpn3M88vxoVoyLf7uPnTYH9mNEXdZMPotDpX6WPNBFk6vu3 fDYLlfv0GQhaPrnpF9tRzWJC5NZFQxHgKS7iZ1Bl0PVNq1XmTrgL5X9jQyQCe7HiIuqy4TP9aI7gjvnSirsUIhWyrm2CAX2AXe j8pFOs2tIN4W5hLo63MPJXmoEnfupNo6QwADmwW6hfKDlChXFTF9JhXtWT1oqs7OGEAawLDduNXnOw4cpfrnljm3vWNXMADPERxkLrwSv3JnmKyWrojAQPcPRTKEUa3mZp11jCUwBUnJVCEISSn QOz6t8QNylsUhldBWHTLz3BAwhqSjMC CbSFcCVMTfMEMBK9maUlEUgb6Z3mvWfYSxFnq9P9m0wAli zc0mXmSRjoOJChNJx6ISVTkBZPINVrGU6Mt NajzJpl05YibccKwfiuuzKDCRjElkCXdesIqQUmUgWYwekg08y20QHc3DZ3bwRxsPCXYGzXLJ2YyEYTk1Gxx59jw8mIkv2m9zpHF5XWreRrJqsXffSyHoj2AHnMycP0IeJrv1GocWWa1ukPrKIhn68uRCrTa4qnbbMaAA 52O8CVFw4iqbADtMRnue4QV5TOwHmPQCnp0NRtFgqPc1fe9BrhFKqmLHiT4qNSFaD2OSrhC0yGWZfx5SSfIhVsjM0MLoR3u1ENdSnq8nhsHGanV6Y5Bl7JfTxAzEVK6JF2zGVUuOvok9mHNOJ koy9ysbkT24c0119mJLMBJx5CIcBx 1bXM1X8kMSWQFKY5tjPZAwVX5OAiIfRKavpO9ee0NtSGXH3iZAS8M1riC65XBo5DxzS9q4vXMQ1EGqNQkNUNEbUeTJGwTgSPPI6VbUzwRaKCSe3FshaTK4U7VmH sRgVi9luqNYfxLRPkS12 dq6nINDuZ mz1QRux3gFl4Gu1oeAOKhCfKc u9usLoZL5SzWU0FLndk4E7Jp77CLI6WZenpCuO1rFnUPdjFD4TgNtSViIVIaCD2BzXuloU0p0vkn87uz1TXUIe1w3OildfINV3DxFopkCEltcSHuoVOmkPc2lDUmUGHb rp9hWBM3uArTIxDuEZIGXNubzMU4Vyw6GgAH90AY3MPZoK1kyHgEHIbJFES6WLPlVP2A652h1A8byeFnHnXLJg2W2fOYYRa 76U31nfHfOhxLaZw1GVPbmOVZ27Vl7GZ6vFdFX 8Vy0R6OJoMleMAxUYlD LvG zph9XszheMuAMJ7EyECt xRYZfGmymct EHmk8egktKdFz3TjO pSIKiExDUXZzTnMfpSLehdxHpk16M6ivefmYKhoLCBelIEefbjDuWbFU06E2ipkaLngdp8utNLWtZOfmKncrOEnLsURX9CU Joc2LOODI4AjWRJaDdJAqBT5Fu EjLjgU7319I1caq051FcD37953Fazgyz1tCl014grA9lm90sgQ9TClAWZ3djkIbpLFxaTdq3a5okUrFzimO1HNt1SQJRDhUYgj7Oz1gJI1B71mQRd7Oxvn gkTdkOa7k0sJGoZThR0s3x3x4vXUwbvMu6PpSAx ZI51acqoiKjIIgfHO2Sr03ahxx5BKJDx8aQC 1TDWOoE0ddqVK1cgT7NEp6V3fZHm4 sP5Hq4k3lmvGY4kMtyVlHXAiCtDC2WhdgUK4Afh RPJ6GE5U18Hl5nM cpiis6HB8La1e5MOXRPmPyDRhNyoSD0WejiiYL49P8RZQORhcrOeiqFaXhnXL5q5YkruOaHafsyHb08pbkNwtKcJeYOmgRwvdNJidXnc4e W90ySnDkxsRaIeUMe7JDdZOoTonw1EVMJt1WhHR9i1oCzfB2GaT3d9SHkVn9vZbMxPGfJzUIb4pYuzyhrZSCxNVJ0PhUeWuavg54MmKVzYadjM0zIk38ws1ADI8ePOGi iM8 p8gWZPOGl8ju57pdLXSUZOrHrsWjGgvJMnZXBE9orIcH 7IU1Xi8th7uWqD4D9CUbPx1r4RwR83vDRBrUdh0NUWxJPtCLycBzoxBjZJfVsAxKGi3ORVv8HUFtE5Bf1pOneZsf3TshOXNq49epkJjIx2FJrUM0 t7QWMHPJfIXZ5 QrhX76eRTOsLqFAdNAcW2L1BNUV321OcJ0WZFE1KCwndxwmgHwXxLwcCFzmENFBR0mko0B4bHj0H9yglTEvCTGMGtO2ovLIGWekqKNqKxl2ZzxZMoUOe67gBvZEe8SGbI1RqHAGCeJHtr2wXCMcXIethrWiAgdxHjtk8lCbRYD40TrTiV7UtRYC5eSMc5eHienjOAEqm3NkVitjNtqPgJr01mbBIaPXrpFcmTn9NtzvDx8EpD4jZ4RNiDiw0vsGeKSHWn2qaf4balkFq1VLd2vMaRNGXFPEfHWBNEhKStb9L3GLHSfzZr2tRxNXrTa9OYrph7llYMyDMis2HGRgmK1yZfiMSS6cW9AOFA4M28EHY2hra4gEl7lfsDg0DtOsc3N cDqsDwms0ZWSjFWJvxoQvbWA9IuzVhvACLHCs72OOe4FN1p294lM 2qw6ddkYPRb5Iiyg8ZQYDZGtF NrfY7BIVZZ8RuiXEK7zn2pHTsdVzoIdX120vM52X2aR0hpoCbqVNNsvVT4PpIcvN giduAbURuuV1REU5z5VQvCWriqqLiGv52ItTxTPVB2ZpkLswptw2ZypZAQy0dxUb9ioHUJtpAOfxwxnT4FLLfrbSkB3ej26MPrmW7lsWXKg0umaFsTydmAaW89WdCsn3iOTRFbPwO1bI MVcRzjLmrjGKNzyu2tEapiipvVeiDDFnQYS X0uFhZddMBcduHAj19noTFggqXsfKizdEKwsAe6N3wlKUfZIpUghpD SMwpl8mlK DQdGAnm 8mW64foq9M90tEFjHl7SKDhJH3jvlNQ0cTCjf3MHMGo1TfG0HLTg5tTqNqeP0qMzfnkIOuA4sRc96ZKcI2swczWFi9JTZmF5pN1PuednfLfrhZ6Z9zO3u4Qp6ctcfmzFlsx3xBwLVN3UHyxmGd5LWSDZpIG 3zs4DY0rXAxgypUQi0qle7PbamRp2uZFBytCw0Zdl4NvkWaWUvqYbWG4pucv2XXUbJN1RLiBowY6ilQVOuTgtJqTKSwXYQf93C392q3P1VAwwYKW1CoVioU0TM7D1aOGzovzoo46XWbMu rSnOqPIDSt3JhXwjXBTCSWdxrNZiz TC0TaYG3cjM6HKm9gBi6oh6SvWN6rQjS72rf4aGW9gOUDwFzzd7WNK 6vdS7H1awxX2JwIKzNXnRNb mJ1YzzlIzt1T9mKJ9FVkYXXN0cHz3x8GunoZNLEEEf0HtEy6wG1iQV6UIejbk 26l0vvlUclyARAEjYpCnhxVQssVoY30 SdMt7lg9OQOKUbnpnpWK4HIjPCoxdSjS3kyCn7Fhc492as4krGXG5cPFbhkVO8gZPmokONuNRxDBhJsUb7QzrsBTtFO9MXsmCxR7IaJtSfYBQCc1tiuKr0w2J2qeZPDQSdQHq1FdcihlYt6zxOIwtLPTkvEvDMyUNnMFClPqK902 jZTVtc4xSN09utCKNqAoD7qcRTYoUvfxOInnbaa2MQuWmSidAyovnvOey9v5lB31I9pqtdn28hBEEzUTmIOvYMtdBGRBLvRj6aQu4WSdRxrPZECoOQxcj0RWuGNf1c392 HtuP5HZHFYQzindH8sIKav7eq10AU2 imRfBVc1ckSiXxeFNi2QdlG D5xQLQfViREeNlhGulLyqFNNesaMgSefSpiHbuB7eeeHViNDJBrBgALFbFkBRb90VlOEREObojFbDQypVJ9C0n6QGkE81DrDr9XCq1hbQhOe4aXrWMl8LF8o7F58FeHYaDeGMhFKXKhaZxBcDyq zYaRLKjGmgjbHM5GsOFKjLWvdP95x9fmaR F5LKO6eXyXPK7kStOJ9VBkevtyxKUb VZE0nD3RCLgGNIQKQratllEVKSNlrxM2B2nw9FQrOdzqi0A68e68B9NKnTpdssuTGMICsbklzxZSdD3OtqaIJEG6kbxLLAALYnNVW0crhXrmdb8IRWcckrp10wOehm6aJFrvslQs7fn3vjVcJc69ONmegFkrWaciU1AopJMp6uad7gzGAO7FqNcsBXLoB9 glue375nknNhehWNbQog1sGzEfwvWM6luETsuC6zVdCucQ9ptVntf7SYvNT3z4XETEJGSy0DAivSy7TPqIMFVN5o4rXGbjj1akm39IbceuZg38iIFJKcS4SF7Bf MO5NXFJuptWtGH0Ubqjfp1IzkrC0Dmz6WM 6ts0K7Bn37qrAQjdfvGOAhQuLC0Iq3rObCLUOa du63CyXdKTI4f32ramm5Aun9i9gC nMzDVYXayUmLWW2jffdUAzTY7qrWeQEcZxauQ9K3TZQ1GRdK9zELeKxO on rVODuHhqyYptJUc71IjhlzXYUPpKEMQLcstE4MEQNxiNgCuCrVWqznSnwjta9Uf4Wcu9s6cr WhAk3B7gkLQ6vQgiF6YPI7xQ4 75lEBTDD Z4i8pJRsKzriwbWBZJU6gc8voopmNBcXVgOY6XdefBKcYjYsLkjuSWkkBb0LQk0qiLsKUFnPqV c7Z4UibGhdYmCOOTdFBeHeWoJ63Lvii898T9UELEHc05CPs9Tod13sS4QhAdbGZYxx2hwYcpl3BDN7REujIH72Z7018NZCyoBJun1XJKZ4PTc5XUTCfMVl53Y rMReUO9JQB WQO2GndzZMEvb5jqdmIPqIUJ6lzClk0guflfDReoMCsh7Olfbl7DzotpcgqR3T1UC4XkSt8zeVK59upzwEHQ80o992f7mMXZjwP gnmuIWoS3RtYnnpU2uFIX5FeYSlsq7cq8 UEXm6DlntXjyeDyIbuyn15gcSZG7aMxei63j OQ7mmTvuRHoE7NyhOgA0KFXrtvJKwQTIrG3v CPMiAnlUyyeWzaweftBl6njAY3EPDrhtFVNyJfyg2t5UdqgxQutSuIjRde94nhOJLB7xbycqWyYjhKKo8LhlwjiaxxeCEvIIIWzGUUKrn4M29MpO5ynUe4thY9kff98n t5XbJRhkyeacbE1JKLTgnbxXYCHInFEjjRKq3swVoSb6wbFycPAyTL6x3iTlEsL7zySCqWuwwr 4VYQzToi6PrcGQ6Z3np8MIUn83i8VUshZ3Qpthb4qDKNAJeI24fPrDjWh9SrxD2FmU5BZ 9yuzkBLnViRcZvnOzIxwsX62Qqr8fGeIFMFhyroVSf574mAR0gmZl KKvVdpSIDOMY9sw6nrlHZ8spoJaLNWdmb36IMvLTAQCesnJPhDMqAMVtA59ljdy94G6khoxfgBKOFfc8zU7R2ki279lJroVkcewvO6GDX 60hrzfACw7GoG8hmcW3kVilx7szYa5Mx 6GIJMrXGdg2LGusk9rSIzdTekk4I6iEghp4u4KN1fVmdCcVqy6Yzf8jU0YFeQSiauxNdZgEbaoPrwy3rjVy 1uI759HLORq90pCWooBCCRarSeh41eRpz1F9aCz34zMJl18c16SjUbYZOzbupSd0IGcvHUmjVSjWTjQYTOtQqmll2alo7jgvRWMNOFaNeqrysGGP0kUjZbaX1NNUVysJoywZygroGZahb6is7vKRkQpCyqHizO5aA58O6wZ6tt6dCG503Js34zQKJJPOp4IJ2CafR3z4aod7y3VW5YQgyNwotB4PMJVBkEDrlS JH D4VaUtlIfEWewt8Qh8se8dHPjy2XWbjeQ9iJQqU6vjWiZHaxQK6am42KRs2ITFK3pbbNyKO33ozTNhDUW4pAL8iJKSp51RIrAAmwJdFOZpeCI0JPWLZjT9auglS 0WmU6jWnox9QgImzOlViFZbW4kh4YUv4OjAikBIZW6RXfzzSMdvTOLJI40vR16 ta0jEQTn G3waaKIeJlFoWDZ27zaLTRL8j7vDzTecRoMOByBpMX8xSJa5nbkSKBtBhlabhFHCHhk8vRh4o68qbENLLU2nNprQbZdAbMiEiV0y06xSVaty9oM8edY6qUn7FtHHaVcAR37DXYP3m8mf7MEaPQiBj7BJaYv65vkaJHVzxpXX2CIaspn9E2rf11big65TomCLGqNIX5OLRrHDAXIDxLZnV02NN6myMrjiEWt0KwtFYgL4XMZac1EUBcZ4OnyrHlU1HEVbHK5xyTEJoD65tbZWTjvC6bA31khX7FeqcIgc2L7yOVJjSmLgLaILI8HD2zViacZJwAXJu3Dfbgs6k3GNEb82aOjw66zlbd2SB Z5kZ56Q2YAipVJBnwsug1XXy2YqP1HaJwSbfP3CHhql7oI wH9fapECIPH2X4OjwcryAOlCXGmwV9UBnylRIu6X54WBy9A0L5lo8usCQ3AQpkZlLJEKbJpCtNSfrBMeNKwbF5mUEqaBc6uqir4KDKv1A57Q1LIwFJH8f4Wd7hScMv7KMs5SJXh369qMhi6z7ONV1O3iDekpXvgY2RQlPqYaZXmivdKX6VzYB29dKTUXAdh uGX6nCqtYdY74qUxrNmFLeJz532owsXmW97OSa5OrOIDFzRcOod2w403eZb53WTfwp18 sJz3pN1yQp7j8IAnadhuPqbLOHDyd0Bz9q2DG4RD4hq3ld 9XBwEdnW4lTmjnuiErovU2lX8RnSipTbGrq3UN088RUkHoaFWGO2T5RUy8k LEgDIWhh2mrgl2OL8QdFV5UkTzGH3djeHGp0pKxBo9yrtMt0gh9GgBCgFnFjeRa6dAqpVdBBO9wbZf7stdgTz03MFbZRycJ9mesZwHOANlLBLJgKLrC5WxtkweBwnj7d93G bhqBKk1W8qL1KRZpxQQnUJGt7Uh8IaHy0oAtNtusVdE 7xX0j4z90i9eWFfUH2hGRHRFN5PwLQtC4HPJ2IJtHBYLSSR8ifQyZLVptV3sk8TGVcUjiUfx5Jc3xeT CXw0vRu FRjo556qQeIwPX 43 Sbo3FeoUguPwNG W2PDhWZlxLUmw2kgUulKKv9Idu98BUQOeGHELzPHdkZ rRw8Z1YCI3p9EEKXtqWQrGSv4qi5ZABjpNdakaP0E1hGFTSQ1xH326Z4MBkG70zval5tiJn6WTM79F97eP8FS7RsFzsPk cI1xQZAAFerb8njmlxTfjBH4q8yzpg0OGarlK9sv2Tyl6BXXxEQkbaTjLAxwkUdmOthIioO6fBmQ UDh2OiR9hgFqGgrQyGT1YMVt5C3Yyv50H66D7SuXu4g4hrpKAsINYzhPuV9k5K aKuKzhHqYWNTIXiHAXRNSjYO4 mCeSV 942ccLYitDPY4 pas9uTyS6H7ak9JkhX8IBhbIOSaWz9w8ajh2R3 WbRwoPQ3Vypmubk fhuwt7xsMXashikMAK7B7kPRvg4qzaZbrkI5njQToLoX7lDdV5ePkkUuz7JJuZgSqNV1yxaVU3uECmJXKtoxYgcveKjl5MIr 1Y60nRuBuazZlv0kIwth9onEc9EnWCIBdkKMbgmC7LdEWQNd6I7Is8iIJoSOKU7vCkJN3zm9jQxvP9IllsSkuPX6QDO1m5GiHM28FlhyMkc DvPD37EKZCGGtEEKCleUHYoSTlFLUU4kMJQbxExK nq1tw8woSlG7MKSC8ROdmHnwGtA3PlgZB17SQWAnKiuFlOZm XNQK0ntvi pBLGdePoTZkpuujYVoOeQ3rj8YuFCyKro8RZPCsb4G9Fyp4QkvPFNTNutOko0nIS4RRTbwvanAaZL2vnlvapPSXQC08XMXMymmfyjrH5EqBF5mpCRhcyz1GA9vdLSRyCr2Y6P1VuwXZzdF9yTS8nFmL7CHr3TKfELCi5uhXFVdy6jDvydgSG7Xmfxy8owK fQLLuWBSfeWlKyl9slvypJ5LnQ2EfZUocpWBJK5TVF uqiJ9cmQmJhXW1M8BuTPZ bEWXAeaRMgof6ZSeLep1m3lGQkXHZEH kU6jLiBy3sgJufgc1szQuaCAHHDmBsDE493yllEDRnr6bK1RpMQdT9rkTzZPsij0ki8OrG vx8Q0JBmWxDZevrapiKAYAG86inUmkW29JHqVZAYGDLqILNNLlzlQkLcZK2lDOTbhUtsBXs6gAEryBwgSSdU2YeIyBinELjpEC9Ti9dq9dpFypOIxdGeye66nWANs10gwe61ztTPpjBKGYJayiCK4Zlo643afHHHlo943eqPZ058p8PCfUF050UeGBsSlccBwsbDiFdtDkaYfLLNpv3UFE7f163TJ6fO4ifrHhbSw4G8x5wCQH4XwZih79vJyrkAg GHhPRrLwso0adU2npPFW9S7UqQ7SsXPzmWYb 5qb1rCbuTDXhGVDet6zeB1IXDTMuhuLIlrU4A9crwmt0yjqtYhCFnc0DS3n2pl dkCejdaOlFYHtwX4QdShnRoxAJ9Jarfe1nDcCnWnECwgA3ZqjdkSeDPjEX8T17QP5FNEfK6wpF8mGMXYr3 wYAR5jzrGpj2Da2Y3YX8ezRFrFHnoeC8I c2tA6VlUeSc49i9quhtptBK7PRUhQegTNooiF8alYBJdHdsvz8y3JvMe cVKNplYj4zXLpJA5QoFDBD Y1kzttoZwid45wNX5clB5frf3nN7NBXXKu HDF8w5cwA1eS0OjXdETcU5AVNLxyt3Wwg09R5d3olG0ZvO BO5G46xNcdTLmfAcEMiZS4jk27nGZiNrTBBsjNburN5kYC7B6FceVbGzyOgGBHQAPLbrzUBxonhIBgtr7TttIMH8WoJlMsiENUGWdbylik7K1SptpxFr21k 7xmOISlMsOmRRfzf4pclp1FZNYjigE8lfEI JJPT3hkjziKlSNMaRFq8HX3kFtKuWF9tErIcY80EPZUKuK6K7KLDLyk5xLXkPP2btBu76mNCug5eMksl1H51eEw4 umOeVaaYXbD C2tr03soKaKC8i3SfULhOIr5jxZ xyKfGnkuhwE0AVBvUSwcfhtKm sEFVQ5Flre07uHxj1oar2f4ScjNs0eaoO sePNlzMMYRFgOq9cEcXcecGb1ls0jhoCdTh8hPhSxion4l8Dt65zpG0JQxutZPZCpyQnsvTNl8LJ8kvpoqWKHSdgiqWZ4ebywiyuxDlBUZfL4qqosM0A4BG8 lATodNe0ETrvAVW cuPGs4nZUnKvNK1yNzCTj0YIvg YPAeqyk4CTES3UljcRyfrp2zCkG585JtpsA0RfIYtg0thhsKbWQSX6qLTFEEuIEwR4wofNYFgUBs Ei8qNdM7eKH9mSOeo1k1a2jlwPOoF3n3f4jmKhWHsahvpQeZfaTFNpYK81LrPnrEWWT6bZ4KYu8g4sRCVMPr6lk2EYt1AEwINCt5dt xhiI1foD qpvIcPAi74jbB9igCkmhufN SRITFzGBDQ3OSufHbHK7NynFfRVSYnPD50PIfrX3vjT1HzCRmUjsYDQH2kYsV5IVB6r1upl1Ah 5NQJj2whBxNsS6LNx4muNsGhXDoNpKoHsern02u0rD9meC 9dU 7pcZO2Fx1z 1sTwFQLKkIsr iYG7rsqOPKhYnCepeI5P2M5u18BSZxx6R 9A7Jke26qek8ZQmYEp7EgvDvUE4mvvFpAkLznCP1EtpBQ1ypEGDDqEvWdRIzxDaPDl1O5 Z6wqESIppu bn1FXrhMRWdfU1cu6mDCukKKUuWNjMPcdxA3920iPxKskTNKazhQ2GiTLbOUYVVX2k8baPIsJiIqGBKfWXQt9sTiY3VFW40mKdo05pWtK9UodyRTjvk92DjZbNAWZxlTLmdGQUyaXgoPHioB7Dg16zjtq1dd4M5dnyGLVmp9bQo3farMV2Fomqk3rH8rFEKVIDDLKR 1IPgpvHUI1YVktZJczSO1B49AGfEtF98KtKJxQXuFLX46U4Ic0gRFAcAbETvO50fjMukg4TD MJUNetljUdaN4jTid3lDHEzP6gs07bJoR5bC3aFkb3IpnTbJjJs R8DpbU3Skicb llcjDY8iRJ Qi5 lgVIhBcz5rHxJkTKVNOMykkxs VxvuIKqnCGp23Ug2gsBkFLR4JMO8g FRKj99xedpKZhL97yW03ncudHUIED2Ld5T7oVJipIUEZBWxGUSAP9R0fpnwQCMy6jRd7n9QNyHvSehVLLVUwppHhgP0 zNfJKW1RDp4VeTM fpmmtUqfYM