কীভাবে অ্যান্ড্রয়েড এমুলেটারের জন্য সঞ্চয় বাড়ানো যায়? (INSTALL_FAILED_INSUFFICIENT_STORAGE)


152

আমি কখনও কখনও (প্রায়শই নয়) আমার এক প্রকল্পের জন্য, কেবল কয়েকটি ক্লাসের জন্য এটি পাই
Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE

আমি কীভাবে এমুলেটারের সঞ্চয় বাড়িয়ে তুলব?


2
আমি এই ত্রুটিটি প্রায়শই দেখতে পাই, ডিভাইসটিতে প্রচুর পরিমাণে সঞ্চয়স্থান থাকা অবস্থায়ও। কেবল মনে রাখবেন যে কখনও কখনও আপনি ত্রুটিটি দেখলে ত্রুটি বার্তাটি যা বলে তা আসলে সত্য নয়।
ল্যান্স নানেক

1
@ পেন্টিনাম ১০ আমি 1.5 এবং 2.2 উভয় ক্ষেত্রেই একই ত্রুটি পেয়েছি, যেখানে আপনার সাহায্যের প্রয়োজন সেখানে এই প্রশ্নটি দেখুন: স্ট্যাকওভারফ্লো / প্রশ্নগুলি / 3584297/… , দয়া করে আমাকে সহায়তা করুন এবং আমাকে ধরুন
পরেশ মায়ানী

উত্তর:


127

হালনাগাদ

এই উত্তরটি, যেমন আমি এটি লিখছি, প্রায় আট বছর বয়সী এবং প্রায় পাঁচ বছরের বাসি। তবে এটি এখনও (যেমন আমি এটি লিখি) "স্বীকৃত" উত্তর, কারণ এটি যখন জিজ্ঞাসা করা হয়েছিল তখন প্রশ্নের উত্তর দিয়েছিল

নতুন অ্যান্ড্রয়েড স্টুডিও সরঞ্জামগুলিতে প্রযোজ্য নতুন উত্তরটি এখানে পাওয়া যাবে: https://stackoverflow.com/a/35828035/62 - এটি স্ক্রিন শট সহ দুর্দান্ত উত্তর। আপনি যদি অ্যান্ড্রয়েড স্টুডিও ব্যবহার করছেন তবে নীচের গ্রহটির উত্তরটিকে উপেক্ষা করুন।

মূলগ্রহণ-ভিত্তিক উত্তর

আমি এই প্রশ্নের উত্তরের সন্ধান করছিলাম এবং উপরের উত্তরের সাথে অসন্তুষ্ট ছিলাম। তবে আমি উত্তরটি পেয়েছি , সুতরাং এটি ভবিষ্যতের রেফারেন্সের জন্য এখানে রয়েছে:

সংক্ষিপ্ত বিবরণ (এবং স্পষ্ট করে), Eclipse এ, "ডিবাগ কনফিগারেশন" এ যান। আপনি এটি "ডিবাগ" আইকনের অধীনে ড্রপ-ডাউন-এ খুঁজে পেতে পারেন। "লক্ষ্য" নির্বাচন করুন এবং প্রবর্তনের জন্য একটি পছন্দসই এমুলেটর লক্ষ্য নির্বাচন করুন। তারপরে "অতিরিক্ত ইমুলেটর কমান্ড লাইন বিকল্পগুলির" অধীনে এটি যুক্ত করুন:

পার্টিশন-আকার 1024

তারপরে এমুলেটরটি বন্ধ করুন (এবং কোনও ডিভাইস মুছে ফেলুন) এবং ডিবাগ আইকনটি ক্লিক করুন, যা আপনার নির্বাচিত পছন্দসই এমুলেটরটি চালু করবে। এটি গুরুত্বপূর্ণ :গ্রহণের ডিবিগারটি চালু করতে হবে, এভিডি নয়।

এটা আমার জন্য সমস্যা স্থির করে।


8
নোট করুন যে "পার্টিশন-আকার" মেগাবাইটে রয়েছে এবং সাধারণত একটি APK ইনস্টল করতে আপনার এপিএলের আকারের চেয়ে কমপক্ষে দ্বিগুণ ডিস্ক স্পেস প্রয়োজন।
ক্রিস্টোফার অর

5
আরেকটি নোট তৈরি করতে হবে: আপনি যে প্রকল্পটি গ্রহণ করতে চান তা অবশ্যই রাইট ক্লিক করতে হবে -> রান-> রান কনফিগারেশন-> প্রকল্প নির্বাচন করুন -> লক্ষ্য -> স্ক্রল ডাউন-> পার্টিশন-আকার 1024 অতিরিক্ত ইম বিকল্পগুলিতে যোগ করুন-> তারপরে এই প্রকল্পটি গ্রহন থেকে চালান
SpoiledTechie.com

4
গুগলের এটিকে অ্যান্ড্রয়েড 3.2 বা 4.0 এর স্পষ্ট সম্পত্তি পরামিতি যুক্ত করা উচিত। অভিশাপ Eclipse AVD প্লাগইনটি ঠিক করুন
পিটার_পিলগ্রিম

চমৎকার সন্ধান ... এডিটি টুলিংয়ের মাধ্যমে প্রকৃতপক্ষে প্রকাশ করা উচিত। আইসিএস এমুলেটরটির ডিফল্টর মধ্যে কেবল 60 এমবি থাকে! বাক্সের বাইরে জিনিসটিতে APKs ইনস্টল করা অসম্ভব।
ddewaele

1
যেহেতু কয়েক বছর পরে আমার মতো এই গৃহীত উত্তরটি দেখার জন্য, আপনি সম্ভবত তার পরিবর্তে stackoverflow.com/a/35828035/62 দেখতে চান ।
লিরন ইয়াহদাভ

90

অ্যান্ড্রয়েড স্টুডিওতে

এভিডি ম্যানেজারটি খুলুন।

এখানে চিত্র বর্ণনা লিখুন

AVD সম্পাদনা করতে আইকন সম্পাদনা ক্লিক করুন।

এখানে চিত্র বর্ণনা লিখুন

উন্নত সেটিংস দেখান ক্লিক করুন।

এখানে চিত্র বর্ণনা লিখুন

প্রয়োজনীয় হিসাবে অভ্যন্তরীণ স্টোরেজ, রাম, এসডি কার্ডের আকার পরিবর্তন করুন। সমাপ্তি ক্লিক করুন।

এখানে চিত্র বর্ণনা লিখুন

হ্যাঁ ক্লিক করে পপআপটি নিশ্চিত করুন।

এখানে চিত্র বর্ণনা লিখুন

AVD- তে ডেটা মুছুন এবং হ্যাঁ ক্লিক করে পপআপটি নিশ্চিত করুন।

এখানে চিত্র বর্ণনা লিখুন

গুরুত্বপূর্ণ: আকার বাড়ানোর পরে, যদি এটি আপনাকে স্বয়ংক্রিয়ভাবে ডেটা মুছতে না জিজ্ঞাসা করে, আপনাকে এভিডি-এর পুল-ডাউন মেনুটি খোলার মাধ্যমে এবং মুছুন ডেটা নির্বাচন করে ম্যানুয়ালি করতে হবে।

এখানে চিত্র বর্ণনা লিখুন

এখন বাড়ানো স্টোরেজ সহ আপনার এমুলেটরটি শুরু করুন এবং ব্যবহার করুন।


7
"অভ্যন্তরীণ স্টোরেজ" পরিবর্তন করা আমার পক্ষে, AVD তৈরির আগে বা পরে কিছুই করে না। এটি সর্বদা 300MB এবং একটি কম স্থানের সতর্কতা সহ আসে।
ট্র্যাভিস ক্রিশ্চান

3
একবার আপনি আকার পরিবর্তন করার পরে এভিডি ম্যানেজারের ড্রপ ডাউন মেনু থেকে ডেটা মুছে দিয়েছেন?
সিজো

1
আমি ইতিমধ্যে AVD মুছে ফেলেছি, তবে এটি নতুনভাবে কনফিগার করা আন-লঞ্চ হওয়া চিত্রগুলির সাথেও ঘটছিল। আমি অন্য একটি প্রশ্নের মধ্যে পেয়েছি যে এটি নির্দিষ্ট API গুলি <23 এর একটি সমস্যা।
ট্র্যাভিস ক্রিশ্চান

ওএমজি - এর জন্য আপনাকে ধন্যবাদ! এটিই আমি খুঁজে পেয়েছি যে এটিই একমাত্র সমাধান!
স্যাম্যিকে

2
এটি গ্রহণযোগ্য উত্তর এবং প্রদর্শিত হওয়া প্রথম হওয়া উচিত (উত্তরাধিকার সূর্যগ্রহণ সম্পর্কিত উত্তর নয়)। আকার পরিবর্তন করতে এবং এমুলেটরটি শুরু করার জন্য এটি যথেষ্ট নয় (এমনকি এখন শীত বুট ব্যবহার করার সময়ও )। কীটি মনে হচ্ছে মুছা ডেটা কমান্ড। ধন্যবাদ!
অ্যালেক্স ভ্যাং

42

Avd config.ini এ নিম্নলিখিতগুলি যুক্ত করুন

disk.dataPartition.size=1024MB

এটি যদি আপনার পক্ষে কাজ করে তবে আমাকে জানান।

আমি লাইনে যুক্ত করলাম ডেটা পার্টিশন সাইজ কনফিগারেশন যুক্ত করুন
এভিডি স্টোরেজ স্পেসের স্ক্রিন শট বাড়ানো হচ্ছে


২.৩ ছবিতে আমার পক্ষে কাজ করেনি। আমি এখনও কেবল 128MB অ্যাপ্লিকেশনের জন্য অভ্যন্তরীণ সঞ্চয়স্থান দেখতে পাচ্ছি।
ম্যাথিয়াস

1
আমি লক্ষ্য করেছি যে এভিডি ম্যানেজারের "সম্পাদনা" ইউআইতে, এই মানটি ম্যানুয়ালি সেট করার চেষ্টা করা সর্বদা এটি 0 তে পুনরায় সেট করবে? সম্ভবত কোনও সম্পর্কিত সমস্যা? সম্ভবত এটি অ্যান্ড্রয়েডের কয়েকটি সংস্করণে সেট করার কথা নয়?
ম্যাথিয়াস

2
1024MBএভিডি ম্যানেজার ব্যবহার করার সময় আপনাকে একটি মান লিখতে হবে । আপনি 1024এটি বের করার জন্য কিছুটা সময় প্রবেশ করতে পারবেন না এবং আমি এই কাজটি নিশ্চিত করেছি
রনি

19

এভিডি ম্যানেজার চালান

আপনার এভিডি নির্বাচন করুন এবং "বিশদ ..." বোতামটি ক্লিক করুন।

আমার ক্ষেত্রে এভিডি ম্যানেজার ডিস্কের আকারটি সেট করে

disk.dataPartition.size=4000M

এই অবৈধ মান , ডিস্ক নির্দিষ্ট করে সত্ত্বেও প্রায় 500MB।

"এভিডি বিশদ" তে পথের দ্বারা AVR এর ফোল্ডারে যান।

এটি config.ini এ সম্পাদনা করুন

disk.dataPartition.size=4000MB

এবং সমস্ত .img ফাইল সরান।


2
এটি নির্বাচিত উত্তর হওয়া উচিত। অ্যান্ড্রয়েড স্টুডিওর বর্তমান সংস্করণগুলিতে (3.0.0), সম্পাদনা সেটিংসের বৈশিষ্ট্যগুলি ধূসর হয়ে যায় যদি আপনি কোনও গুগল প্লে সক্ষম এভিডি চালিয়ে যাচ্ছেন। এটি কাজ করে। আমি আমার পরীক্ষার ডিভাইসটি 400M থেকে 2000MB তে পরিবর্তন করেছি, সমস্ত * .আইএমজি এবং * .QCO2 ফাইল মুছে ফেলেছি। এভিডিতে ডেটা মুছে ফেলা। তারপরে এটি বুট হয়ে গেল এবং এতে 2000 এমবি স্টোরেজ ছিল।
এম লিন্ডসে

@ এমএমইন্ডসে আমি সম্মত
mwa91

শুধু এফওয়াইআই, আমাকে * .আইএমজি বা অন্য কোনও ফাইল মুছতে হয়নি। কনফিগার.ইআই-তে মান পরিবর্তন করা যথেষ্ট ছিল।
মোহিব শেঠ

ধন্যবাদ! আমার মামলার জন্য কাজ করেছেন।
অ্যান্ড্রয়েড_দেব

10

আমি একটি APK ইনস্টল করছিলাম:

adb install /home/me/jones_android-arm.apk

এবং এটি আমাকে জানিয়ে একটি ত্রুটি বার্তা পাচ্ছিলাম

/data/local/tmp/jones_android-arm.apk

খুব বড় ছিল। R15 থেকে এসডিকি সরঞ্জামগুলি ব্যবহার করে এবং 15 টি ADT আমি আমার বিদ্যমান এমুলেটরটির কিছু সেটিংস হস্তান্তর করতে AVD ম্যানেজারটি ব্যবহার করতে সক্ষম হয়েছি:

Window-> AVD Manager -> (select you virtual machine) -> Edit

তারপরে "ত্বক:" এর ঠিক নীচে হার্ডওয়্যার বৈশিষ্ট্য উইন্ডোতে গিয়ে আমি হার্ডওয়্যার: নতুন বোতামটি 'পার্টিশনের আদর্শ আকার' দিয়ে নির্বাচন করতে সক্ষম হয়েছি। তবে আমি '0' ছাড়া অন্য মানটি সেট করতে সক্ষম হইনি। উদ্বিগ্ন, আমি আমার $ OME হোম} /। অ্যান্ড্রয়েড / এভিডি ডিরেক্টরিতে গিয়েছিলাম সেখানে একটি 'মাইভিএম.এভিডি' ডিরেক্টরি ছিল। সেই ডিরেক্টরিতে গিয়ে আমি একটি 'config.ini' ফাইল পেয়েছি। প্রবেশ ছিল:

disk.dataPartition.size=0

আমি এটি সেট করেছি:

disk.dataPartition.size=1024

.. তারপরে এভিডি ম্যানেজারের কাছে ফিরে গেলেন, মাইভিএম বাছাই করেছেন, 'স্টার্ট' নির্বাচন করেছেন, নিম্নলিখিতটি ডায়ালগটি ব্যবহার করে ব্যবহারকারীর ডেটা মুছতে বেছে নিয়েছেন, এবং রান এবং ইনস্টল করতে সক্ষম হয়েছিলেন।


এটি গতবারের জন্য দুর্দান্ত কাজ করেছিল তবে আজ আমাকে লিখতে হয়েছিল disk.dataPartition.size=1024MB, যেহেতু 1024এবং 1024mকাজ করছে না।
সুফিয়ান

6

অ্যাভিডি ম্যানেজারের "সিস্টেম পার্টিশনের আদর্শ আকার" বিকল্প রয়েছে, এটি 1024 এমবিতে সেট করার চেষ্টা করুন বা কমান্ডলাইন লঞ্চ বিকল্পটি ব্যবহার করে যা একই কাজ করে।

তাই, আমি কেবল 4.0 এমুলেটর ইমেজ নিয়ে এই সমস্যার মুখোমুখি হয়েছি।


একই অবস্থা. যখন আপনি এটি করেন তা নিশ্চিত করুন যে কোনও এমপ্লিটরটি একটি পরিষ্কার অবস্থা থেকে পুনরায় আরম্ভ করবেন এবং কোনও স্ন্যাপশট থেকে নয়।
ম্যানফ্রেড মোসার 21

6

নিম্নলিখিত হিসাবে কমান্ড লাইনে এমুলেটরটি শুরু করুন:

emulator -avd <your avd name> -partition-size 1024 -wipe-data


3
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.junkfoodian"
android:installLocation="preferExternal"   // this line can work for  Installation error:            //                                             // INSTALL_FAILED_INSUFFICIENT_STORAGE

কেন এটিকে ভোট দেওয়া হয়েছিল তা নিশ্চিত নন - আমার পক্ষে কাজ করেছেন তাই আপ ভোট দিন। :)
রবার্ট

3

লিনাক্সে অ্যান্ড্রয়েড এমুলেটারের স্টোরেজটির আকার পরিবর্তন করতে:

1) কিমু ইনস্টল করুন

2) ভার্চুয়াল মেশিনের img ফাইল ধারণকারী ডিরেক্টরিটি সন্ধান করুন। ~ / .Android / avd / .avd এর মতো কিছু এবং এতে সিডি।

3) এক্সট 4 চিত্রগুলিকে পুনরায় আকার দিন: অর্থাত 500 এমবি থেকে 4 জিবি এক্সিকিউটে বাড়ার জন্য

qemu-img resize userdata.img +3.5GB
qemu-img resize userdata-qemu.img +3.5GB

4) ফাইল সিস্টেম বৃদ্ধি:

e2fsck -f userdata.img
resize2fs userdata.img
e2fsck -f userdata-qemu.img
resize2fs userdata-qemu.img

5) এসডি কার্ড চিত্রের জন্য, alচ্ছিক: ডেটা উদ্ধার করুন:

mkdir 1
mount -o loop sdcard.img 1
cp -a 1 2
umount 1

6) চিত্রটি 100Mb থেকে Gb তে পুনরায় আকার দিন:

qemu-img resize sdcard.img +3.9GB

7) ফাইল সিস্টেম পুনরায় উত্পন্ন:

mkfs.vfat sdcard.img

8) alচ্ছিক: পুরানো ডেটা পুনরুদ্ধার করুন:

mount -o loop sdcard.img 1
cp -a 2/* 1
mount -o loop sdcard.img 1 

2

আমি একজন শিক্ষানবিস, তবে "হ্যালো গ্রিড ভিউ" দিয়ে চারপাশে খেলতে গিয়ে আমার এই সমস্যা হয়েছিল। আমি নিজের ছবিগুলি ব্যবহার করার চেষ্টা করছিলাম যা সমস্ত ফাইল আকারে খুব বড় ছিল।

দ্রুত সমাধানটি হ'ল ফোটোগুলির সংখ্যা হ্রাস করা, এইভাবে APK ফাইলের আকার হ্রাস করা।

তবে, আমি অনুমান করি যে অন্য যে কেউ এই থ্রেডটিকে হিট করে তা হ'ল আমি কীভাবে কোনও অ্যাপ্লিকেশনে জেপিজি এবং এমপি 3 ব্যবহার করতে পারি এবং এপিডিটি ছোট থাকে সেজন্য তারা এসডি কার্ডে সঞ্চয় করে তা নিশ্চিত করব কী করে?


2
আমি মনে করি আমি উত্তরটি এখানে পেয়েছি: developer.android.com/guide/topics/resources/index.html কোনও বড় উপাদানগুলির জন্য "সংস্থানগুলি" পরিবর্তে "সম্পদ" ব্যবহার করার চেষ্টা করুন। পৃষ্ঠা থেকে: সংস্থানগুলি একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশনের একটি অবিচ্ছেদ্য অঙ্গ। সাধারণভাবে, এগুলি বাহ্যিক উপাদান যা আপনি নিজের অ্যাপ্লিকেশনের মধ্যে চিত্র এবং অডিও, ভিডিও, পাঠ্য স্ট্রিং, বিন্যাস, থিম ইত্যাদি অন্তর্ভুক্ত করতে চান এবং রেফারেন্স করতে চান প্রতিটি অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে সংস্থানসমূহের জন্য একটি ডিরেক্টরি (রেজোল্ট) এবং এর জন্য একটি ডিরেক্টরি রয়েছে সম্পদ (সম্পদ /)।

2

আপনাকে এমুলেটরটির ভার্চুয়াল মেমরি বাড়াতে হবে

এমুলেটরের ভার্চুয়াল মেমরি কীভাবে বাড়ানো যায়

এমুলেটর -এভিডি "এমুলেটর নাম"-পার্টিশন-আকার 2024

তারপরে আপনার এপিকে ইনস্টল করার চেষ্টা করুন


2

এভিডি ম্যানেজারে আপনার সেটিংস আপডেট করুন এবং 'ব্যবহারকারীর ডেটা মুছুন' সক্ষম করে ডিভাইসটি শুরু করুন। এটি আমার পক্ষে কাজ করেছে।


1
নতুন এভিডি ইন্টারফেসে, এমুলেটর লাইনে ডান ক্লিক করুন, তারপরে আপনি অভ্যন্তরীণ স্টোরেজ পরিবর্তন করার পরে ব্যবহারকারীর ডেটা মোছা নির্বাচন করুন।
টিয়াগো জোর্তিয়া দে কনটো

1

আমি অনুমান করি যে আপনার এমুলেটরটি "এমুলেটর-ওয়াইপ-ডেটা -ভ্যাড অ্যাওয়ার্ড অ্যাভিডনেম" দিয়ে পুনরায় আরম্ভ করতে হবে বা আপনি যদি Eclipse ব্যবহার করছেন তবে রান কনফিগারেশনে "ব্যবহারকারী ডেটা মুছুন" পরীক্ষা করে দেখুন।

আমি এখনই একই সমস্যার মুখোমুখি।


0

হোস্ট ফাইল সিস্টেমটি মূলত জায়গার বাইরে ছিল তখনই আমি এটি ঘটতে দেখেছি। ভিএম এর ফাইল সিস্টেমটি যেখানে ফাইল সিস্টেমে সঞ্চিত আছে সেখানে আপনার কি অনেক ফাঁকা জায়গা আছে?


আমার হার্ড ডিস্কগুলিতে 13 জিবি বিনামূল্যে।
পেন্টিয়াম

0

এটি স্পষ্টভাবে কোনও উপযুক্ত উত্তর নয়, তবে এটি একটি ছোট ইঙ্গিত।

আপনি যদি আপনার অ্যাপে স্থিতিশীল ফাইল ব্যবহার করতে চান। আপনার এগুলি সংস্থান হিসাবে বা সম্পদ হিসাবে রাখা উচিত। তবে, যদি আপনার স্মৃতি সংক্রান্ত উদ্বেগগুলি যদি আপনার APK কে ছোট রাখতে চান তবে আপনার অ্যাপের নকশাটি এমনভাবে পরিবর্তন করা দরকার যাতে,

এগুলি সংস্থান হিসাবে রাখার পরিবর্তে, আপনার অ্যাপ্লিকেশন চালানোর সময় (ইনস্টলেশনের পরে) আপনি এসডি কার্ড থেকে ফাইলগুলি (ডিফেনেটালি বিভিন্ন ফাইল ব্যবহারকারীদের যা আপনার প্রয়োজন ফাইলগুলি নাও রাখতে পারে) নিতে পারেন। এর জন্য ইউ ব্যবহারকারীর নির্বাচনের জন্য অডিও, চিত্র ফাইলগুলি নেওয়ার জন্য সামগ্রীResolver ব্যবহার করতে পারেন।

এটির সাহায্যে আপনি ব্যবহারকারীকে অন্য একটি বৈশিষ্ট্য দিতে পারেন যেমন তিনি নিজের পছন্দমতো অ্যাপটিতে অডিও / চিত্র ফাইলগুলি লোড করতে পারেন।


0

গ্রহনের প্ল্যাটফর্মের এভিডি ম্যানেজার ডায়লগের বাম গাছ "ভার্চুয়াল ডিভাইস" থেকে একটি আইটেম নির্বাচন করার সময় আপনি একটিটি শুরু করতে পারেন, শুরু ইউআইতে "ব্যবহারকারীর ডেটা মুছুন" বিকল্প রয়েছে


0

নিম্নলিখিত পদ্ধতিটি আমার পক্ষে কাজ করেছিল

  1. টার্মিনাল উইন্ডোতে আপনার অ্যান্ড্রয়েড এসডিকে / সরঞ্জাম ফোল্ডারে নেভিগেট করুন (আপনি যদি এর জন্য পথ যোগ করেন নি)

  2. আপনি যে ভার্চুয়াল ডিভাইসটি পরিষ্কার করার পরিকল্পনা করছেন তা চালিত হয়েছে কিনা তা নিশ্চিত করুন।

  3. "./Emulator -Wip-data -Avd YourAvdName" কমান্ডটি চালান যেখানে আপনারAvdName আপনার ভার্চুয়াল অ্যান্ড্রয়েড ডিভাইসের নাম


-2

প্রকল্পটি -> ক্লিন বেছে নেওয়ার চেষ্টা করুন। একটি সাধারণ পরিষ্কার এটি ঠিক করতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.