Defective Code Logo

Total Downloads Latest Stable Version Latest Stable Version

English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文

تعارف

Faker Storage ایک اعلیٰ کارکردگی والا PHP پیکج ہے جو بڑے حجم کے جعلی ڈیٹا فائلوں کو موثر طریقے سے تخلیق اور ذخیرہ کرنے کے لیے ڈیزائن کیا گیا ہے۔ ہم وقت سازی کو مدنظر رکھتے ہوئے بنائی گئی، یہ Swoole یا PCNTL کا فائدہ اٹھاتی ہے تاکہ ہزاروں فائلیں متوازی طور پر تیار کی جا سکیں، جو کہ بوجھ کے ٹیسٹنگ، ترقیاتی ماحول، اور اسٹوریج سسٹم کی جانچ کے لیے بہترین ہے۔

یہ پیکج مختلف فائل کی اقسام کو تیار کرنے کے لیے ایک واضح API فراہم کرتا ہے جس میں تصاویر (PNG، JPG، GIF، BMP، WEBP، AVIF)، متنی فائلیں، CSV فائلیں، بائنری ڈیٹا، اور RFC822 کی تعمیل کرنے والے ای میل شامل ہیں۔ ہر جنریٹر جب بیجڈ ہوتا ہے تو متعین آؤٹ پٹ پیدا کرتا ہے، اس بات کو یقینی بناتا ہے کہ ٹیسٹنگ کا ڈیٹا مختلف ماحولوں میں دوبارہ پیدا کیا جا سکے۔

اہم خصوصیات

مثال

use DefectiveCode\Faker\Faker;
use League\Flysystem\Filesystem;
use DefectiveCode\Faker\Generators\Png;
use League\Flysystem\Local\LocalFilesystemAdapter;
 
// 1000 PNG تصاویر تخلیق کریں 10 متوازی کارکنوں کے ساتھ
Faker::make(Png::class)
->width(800, 1920)
->height(600, 1080)
->toDisk(new Filesystem(new LocalFilesystemAdapter('/path/to/storage')))
->basePath('images')
->count(1000)
->concurrency(10)
->seed(42)
->generate();
 
// CSV فائلیں تخلیق کریں
use DefectiveCode\Faker\Generators\Csv;
 
Faker::make(Csv::class)
->columns(5, 10)
->rows(100, 500)
->delimiter(',')
->toDisk(new Filesystem(new LocalFilesystemAdapter('/path/to/storage')))
->count(50)
->generate();
 
// منسلکات کے ساتھ ای میلز تخلیق کریں
use DefectiveCode\Faker\Generators\Email;
 
Faker::make(Email::class)
->paragraphs(3, 5)
->sentences(2, 4)
->withAttachment(Png::class, 1, 3)
->toDisk(new Filesystem(new LocalFilesystemAdapter('/path/to/storage')))
->count(100)
->generate();

تنصیب

کمپوزر کے ذریعے پیکج نصب کریں:

composer require defectivecode/faker-storage

ضروریات

optional dependencies

بہترین کارکردگی کے لیے، Swoole توسیع کو انسٹال کریں:

pecl install swoole

یہ پیکج خود بخود Swoole کا استعمال کرے گا اگر دستیاب ہو، بصورت دیگر PCNTL پر واپس جائے گا۔

استعمال

بنیادی ورک فلوس

تمام جنریٹر اسی پیٹرن کی پیروی کرتے ہیں:

  1. ایک جنریٹر کے ساتھ ایک Faker مثال تیار کریں
  2. جنریٹر کی ترتیب دیں (اختیاری)
  3. اسٹوریج منزل مقرر کریں
  4. ہم وقت سازی اور تعداد کی ترتیب دیں
  5. فائلیں تخلیق کریں
use DefectiveCode\Faker\Faker;
use League\Flysystem\Filesystem;
use DefectiveCode\Faker\Generators\Text;
use League\Flysystem\Local\LocalFilesystemAdapter;
 
Faker::make(Text::class)
->paragraphs(5, 10) // جنریٹر سے متعلقہ ترتیب
->toDisk(new Filesystem(new LocalFilesystemAdapter('/storage')))
->basePath('documents') // فائلیں /storage/documents/ میں ہوں گی
->count(100) // 100 فائلیں تخلیق کریں
->concurrency(4) // 4 کارکنوں کا استعمال کریں
->seed(123) // متعين آؤٹ پٹ کے لیے
->generate();

اسٹوریج کی ترتیب

Flysystem کا استعمال

Faker Storage، لیگ فلائی سسٹم کو اسٹوریج کی تج抽 کی نمائندگی کے لیے استعمال کرتا ہے:

use League\Flysystem\Filesystem;
use League\Flysystem\Local\LocalFilesystemAdapter;
 
// مقامی اسٹوریج
$filesystem = new Filesystem(new LocalFilesystemAdapter('/path/to/storage'));
 
Faker::make(Png::class)
->toDisk($filesystem)
->generate();

AWS S3 اسٹوریج

use Aws\S3\S3Client;
use League\Flysystem\Filesystem;
use League\Flysystem\AwsS3V3\AwsS3V3Adapter;
 
$client = new S3Client([
'credentials' => [
'key' => 'your-key',
'secret' => 'your-secret',
],
'region' => 'us-east-1',
'version' => 'latest',
]);
 
$adapter = new AwsS3V3Adapter($client, 'your-bucket-name');
$filesystem = new Filesystem($adapter);
 
Faker::make(Png::class)
->toDisk($filesystem)
->basePath('uploads/images')
->generate();

ڈسک کے اختیارات

فائل سسٹم کے اڈاپٹر کو اضافی اختیارات پاس کریں:

Faker::make(Png::class)
->toDisk($filesystem)
->diskOptions([
'visibility' => 'public',
'ACL' => 'public-read',
'CacheControl' => 'max-age=31536000',
])
->generate();

ہم وقت سازی کی ترتیب

concurrency() طریقہ کے ساتھ متوازی عمل کو کنٹرول کریں:

// 10 کارکن تھریڈز/پروسیس کا استعمال کریں
Faker::make(Png::class)
->concurrency(10)
->generate();
 
// Swoole مخصوص: ہر تھریڈ کے لیے دونوں تھریڈ اور کورٹینز مرتب کریں
Faker::make(Png::class)
->concurrency(threads: 4, coroutines: 8) // 4 کارکن، ہر ایک میں 8 کورٹینز
->generate();

فائل کا نام رکھنے

ڈیفالٹ نام رکھنا

پہلے سے طے شدہ طور پر، فائلیں UUID v4 کا استعمال کرتے ہوئے نام رکھتی ہیں:

// پیدا کرتا ہے: e7f0a8d3-5c2b-4f9e-8a1d-3b4c5d6e7f8a.png
Faker::make(Png::class)->generate();

بلٹ ان نام جنریٹرز

use DefectiveCode\Faker\NameGenerator;
 
// UUID پر مبنی (پہلے سے طے شدہ)
NameGenerator::setDefault('uuid'); // پیدا کرتا ہے: e7f0a8d3-5c2b-4f9e-8a1d-3b4c5d6e7f8a.png
 
// ترتیب وار نمبر لگانا
NameGenerator::setDefault('sequence'); // پیدا کرتا ہے: 1.png، 2.png، 3.png، ...

حسب ضرورت نام رکھنا

فائل کے نام کسٹمائز کرنے کے لیے ایک بندش فراہم کریں:

use DefectiveCode\Faker\NameGenerator;
 
// حسب ضرورت بندش
Faker::make(Png::class)
->nameGenerator(function (int $seed, int $completedFiles, $generator) {
return "custom-{$completedFiles}-{$seed}.png";
})
->generate();
 
// تاریخ پر مبنی نام رکھنا
Faker::make(Png::class)
->nameGenerator(function (int $seed, int $completedFiles, $generator) {
return date('Y/m/d') . "/image-{$completedFiles}.png";
})
->generate();

دوبارہ پیدا کرنے کے لیے بیجنگ

اسی فائلوں کو چلانے کے دوران تخلیق کرنے کے لیے بیج سیٹ کریں:

Faker::make(Png::class)
->seed(42)
->count(10)
->generate();

ہر فائل کو ایک منفرد متعين بیج دیا جاتا ہے جو بنیادی بیج اور فائل کے انڈیکس سے ماخوذ ہوتا ہے۔

جنریٹرز

تصویر کے جنریٹرز

تمام امیج جنریٹرز ابعاد اور معیار کی ترتیب کی حمایت کرتے ہیں۔

PNG

use DefectiveCode\Faker\Generators\Png;
 
Faker::make(Png::class)
->width(800, 1920) // 800-1920px کے درمیان بے ترتیب چوڑائی
->height(600, 1080) // 600-1080px کے درمیان بے ترتیب اونچائی
->withAlpha(true) // الفا/شفافیت چینل کو فعال کریں
->grid(5) // اختیاری: 5x5 متوازن پیٹرن تیار کریں
->toDisk($filesystem)
->generate();

JPG

use DefectiveCode\Faker\Generators\Jpg;
 
Faker::make(Jpg::class)
->width(800, 1920) // 800-1920px کے درمیان بے ترتیب چوڑائی
->height(600, 1080) // 600-1080px کے درمیان بے ترتیب اونچائی
->grid(5) // اختیاری: 5x5 متوازن پیٹرن تیار کریں
->toDisk($filesystem)
->generate();

GIF

use DefectiveCode\Faker\Generators\Gif;
 
Faker::make(Gif::class)
->width(800, 1920) // 800-1920px کے درمیان بے ترتیب چوڑائی
->height(600, 1080) // 600-1080px کے درمیان بے ترتیب اونچائی
->withAlpha(true) // الفا/شفافیت چینل کو فعال کریں
->grid(5) // اختیاری: 5x5 متوازن پیٹرن تیار کریں
->toDisk($filesystem)
->generate();

BMP

use DefectiveCode\Faker\Generators\Bmp;
 
Faker::make(Bmp::class)
->width(800, 1920) // 800-1920px کے درمیان بے ترتیب چوڑائی
->height(600, 1080) // 600-1080px کے درمیان بے ترتیب اونچائی
->grid(5) // اختیاری: 5x5 متوازن پیٹرن تیار کریں
->toDisk($filesystem)
->generate();

WEBP

use DefectiveCode\Faker\Generators\Webp;
 
Faker::make(Webp::class)
->width(800, 1920) // 800-1920px کے درمیان بے ترتیب چوڑائی
->height(600, 1080) // 600-1080px کے درمیان بے ترتیب اونچائی
->withAlpha(true) // الفا/شفافیت چینل کو فعال کریں
->grid(5) // اختیاری: 5x5 متوازن پیٹرن تیار کریں
->toDisk($filesystem)
->generate();

AVIF

use DefectiveCode\Faker\Generators\Avif;
 
Faker::make(Avif::class)
->width(800, 1920) // 800-1920px کے درمیان بے ترتیب چوڑائی
->height(600, 1080) // 600-1080px کے درمیان بے ترتیب اونچائی
->withAlpha(true) // الفا/شفافیت چینل کو فعال کریں
->grid(5) // اختیاری: 5x5 متوازن پیٹرن تیار کریں
->toDisk($filesystem)
->generate();

بے ترتیب تصویر

بے ترتیب تصویر کے فارمیٹ پیدا کرتا ہے:

use DefectiveCode\Faker\Generators\RandomImage;
 
Faker::make(RandomImage::class)
->width(800, 1920)
->height(600, 1080)
->withAlpha(false) // بے ترتیب انتخاب: AVIF، BMP، GIF، JPEG، PNG، WEBP
->toDisk($filesystem)
->generate();
 
Faker::make(RandomImage::class)
->width(800, 1920)
->height(600, 1080)
->withAlpha(true) // بے ترتیب انتخاب: AVIF، GIF، PNG، WEBP
->toDisk($filesystem)
->generate();

متنی جنریٹر

پیراگراف کے ساتھ سادہ متنی فائلیں تخلیق کریں:

use DefectiveCode\Faker\Generators\Text;
 
Faker::make(Text::class)
->paragraphs(5, 10) // ہر فائل میں 5-10 پیراگراف
->sentences(3, 6) // ہر پیراگراف میں 3-6 جملے
->toDisk($filesystem)
->generate();

آؤٹ پٹ کی مثال:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
 
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

CSV جنریٹر

بے ترتیب ڈیٹا کے ساتھ CSV فائلیں تخلیق کریں:

use DefectiveCode\Faker\Generators\Csv;
 
Faker::make(Csv::class)
->columns(5, 10) // 5-10 کالم
->rows(100, 500) // 100-500 قطاریں
->delimiter(',') // کالم کی علیحدگی
->enclosure('"') // میدان کا قید
->escape('\\') // فرار کردار
->eol("\n") // لائن کا اختتام
->toDisk($filesystem)
->generate();

آؤٹ پٹ کی مثال:

"جان ڈو","john@example.com","555-1234","نیویارک","انجینئر"
"جین اسمتھ","jane@example.com","555-5678","لاس اینجلس","ڈیزائنر"
"باب جانسن","bob@example.com","555-9012","شکاگو","مینجر"

بائنری جنریٹر

بے ترتیب بائنری ڈیٹا تیار کریں:

use DefectiveCode\Faker\Generators\Binary;
 
Faker::make(Binary::class)
->length(1024, 1048576) // 1KB - 1MB
->toDisk($filesystem)
->generate();

ای میل جنریٹر

RFC822 کے مطابق ای میل فائلیں تشکیل دیں:

use DefectiveCode\Faker\Generators\Email;
 
Faker::make(Email::class)
->paragraphs(3, 5) // ای میل باڈی میں پیراگراف
->sentences(2, 4) // ہر پیراگراف میں جملے
->withAttachment(Png::class, 1, 3) // 1-3 PNG منسلکات شامل کریں
->toDisk($filesystem)
->generate();

ای میل ہیڈرز

تیار کردہ ای میلز میں شامل ہیں:

منسلکات کے ساتھ ای میل

فائلیں ایسے جنریٹر کلاس ناموں یا مثالوں کا استعمال کرتے ہوئے ملحق کریں:

use DefectiveCode\Faker\Generators\Email;
use DefectiveCode\Faker\Generators\Png;
use DefectiveCode\Faker\Generators\Pdf;
 
Faker::make(Email::class)
->withAttachment(Png::class, 1, 3) // 1-3 PNG منسلکات
->generate();
 
// ترتیب دیا گیا جنریٹر انسٹاںس کا استعمال کرتے ہوئے منسلک کریں
$pngGenerator = new Png(Png::getDefaultConfig());
$pngGenerator->width(400, 800)->height(300, 600);
 
Faker::make(Email::class)
->withAttachment($pngGenerator, 2, 5)
->generate();

آؤٹ پٹ کی مثال:

To: جان ڈو <john.doe@example.com>
From: جین اسمتھ <jane.smith@example.com>
Subject: کل اہم اجلاس
Date: Fri, 03 Jan 2026 10:30:00 +0000
Message-ID: <3e92e5c2b0d632b3a36fbbb17484b7fe@example.com>
Content-Type: multipart/mixed; boundary="----=_Part_123"
 
------=_Part_123
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
 
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
 
------=_Part_123
Content-Type: image/png; name="attachment.png"
Content-Disposition: attachment; filename="attachment.png"
Content-Transfer-Encoding: base64
 
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==
------=_Part_123--

اعلیٰ استعمال

حسب ضرورت جنریٹرز

اپنے جنریٹرز تخلیق کرنے کے لیے Generator انٹرفیس کو نافذ کریں:

use DefectiveCode\Faker\Configs\Config;
use DefectiveCode\Faker\Concerns\SetsSeed;
use DefectiveCode\Faker\Generators\Generator;
use DefectiveCode\Faker\Concerns\PreparesFaker;
 
class MyCustomGenerator implements Generator
{
use PreparesFaker;
use SetsSeed;
 
public function __construct(public Config $config) {}
 
public static function getDefaultConfig(): Config
{
return new MyCustomConfig([
'contentType' => 'application/x-custom',
'nameGenerator' => NameGenerator::default('extension'),
]);
}
 
public function generate(): mixed
{
// آپ کی تخلیق کی منطق یہاں
$data = $this->faker->randomElement(['foo', 'bar', 'baz']);
 
$stream = fopen('php://temp', 'w+');
fwrite($stream, $data);
 
return $stream;
}
}
 
// اپنے حسب ضرورت جنریٹر کا استعمال کریں
Faker::make(MyCustomGenerator::class)
->toDisk($filesystem)
->generate();

ترتیب کی کلاسیں

ہر جنریٹر ایک ترتیب کی کلاس کا استعمال کرتا ہے جو Config سے بڑھتا ہے:

use DefectiveCode\Faker\Configs\Config;
 
class MyCustomConfig extends Config
{
public int $minValue = 1;
public int $maxValue = 100;
}

کارکردگی کے نکات

  1. Swoole کا استعمال کریں: بہترین کارکردگی کے لیے Swoole توسیع کو انسٹال کریں
  2. ہم وقت سازی کو ریگولیٹ کریں: بہترین تھروپ پٹ کے لیے تھریڈ کی تعداد کو CPU کور کے ساتھ ہم آہنگ کریں
  3. بیچ کی کارروائیاں کریں: متعدد چھوٹے چلانے کے بجائے بڑے بیچ تیار کریں
  4. اسٹوریج کی جگہ: عارضی فائلوں کو اپ لوڈ کرنے سے پہلے تیز اسٹوریج (SSD، مقامی ڈسک) کا استعمال کریں
  5. نیٹ ورک I/O: جب S3 کا استعمال کرتے ہیں تو بینڈوڈتھ کے استعمال کو زیادہ سے زیادہ کرنے کے لیے ہم وقت سازی میں اضافہ کریں

ترتیب

عالمی ترتیب کے طریقے

یہ طریقے تمام Faker مثالوں پر دستیاب ہیں:

make(string $generator): Faker

متعلقہ جنریٹر کے ساتھ ایک نئی Faker مثال تخلیق کریں:

Faker::make(Png::class)

toDisk(Filesystem $filesystem): Faker

ذخیرہ منزل کو ترتیب دیں (ضروری):

Faker::make(Png::class)
->toDisk(new Filesystem(new LocalFilesystemAdapter('/storage')))

basePath(string $basePath): Faker

فائل سسٹم کے اندر بنیادی راستہ مقرر کریں:

Faker::make(Png::class)
->basePath('images/uploads') // فائلیں /storage/images/uploads/ میں ذخیرہ کی جاتی ہیں

count(int $count): Faker

تخلیق کرنے کے لیے فائلوں کی تعداد مقرر کریں:

Faker::make(Png::class)
->count(1000)

concurrency(int $threads, ?int $coroutines = null): Faker

ہم وقت سازی کو ترتیب دیں:

// بنیادی ہم وقت سازی
Faker::make(Png::class)
->concurrency(4)
 
// Swoole مخصوص: تھریڈز اور کورٹینز
Faker::make(Png::class)
->concurrency(threads: 4, coroutines: 8)

seed(int $seed): Faker

متعين تخلیق کے لیے بیج مقرر کریں:

Faker::make(Png::class)
->seed(42)

nameGenerator(Closure $generator): Faker

فائل کے نام کی تخصیص کریں:

Faker::make(Png::class)
->nameGenerator(function (int $seed, int $completedFiles, $generator) {
return "file-{$completedFiles}.png";
})

diskOptions(array $diskOptions): Faker

فائل سسٹم کے اڈاپٹر کو اختیارات پاس کریں:

Faker::make(Png::class)
->diskOptions([
'visibility' => 'public',
'ACL' => 'public-read',
])

generate(): void

فائل کی تخلیق کو عملی شکل دیں:

Faker::make(Png::class)->generate();

سپورٹ کی رہنمائی

ہمارے اوپن سورس پیکیج کا انتخاب کرنے کے لیے شکریہ! براہ کرم ان سپورٹ رہنما خطوط پر ایک لمحہ صرف کریں۔ یہ آپ کو ہمارے پروجیکٹ سے زیادہ سے زیادہ فائدہ اٹھانے میں مدد کریں گے۔

کمیونٹی کی بنیاد پر مدد

ہمارا اوپن سورس پروجیکٹ ہماری شاندار کمیونٹی کی مدد سے چلتا ہے۔ اگر آپ کے پاس سوالات ہیں یا مدد کی ضرورت ہے تو، StackOverflow اور دیگر آن لائن وسائل آپ کے بہترین دوست ہیں۔

کیڑے اور فیچر کی ترجیحات

اوپن سورس پروجیکٹ کا انتظام کرنے کی حقیقت یہ ہے کہ ہم ہر رپورٹ شدہ کیڑے یا فیچر کی درخواست کو فوری طور پر نہیں حل کر سکتے۔ ہم مسائل کو درج ذیل ترتیب میں ترجیح دیتے ہیں:

1. ہماری ادائیگی شدہ مصنوعات پر اثر انداز ہونے والے کیڑے

وہ کیڑے جو ہماری ادائیگی شدہ مصنوعات پر اثر انداز ہوتے ہیں ہمیشہ ہماری پہلی ترجیح ہوں گے۔ کچھ معاملات میں، ہم صرف ان کیڑوں کو حل کریں گے جو براہ راست ہمیں متاثر کرتے ہیں۔

2. کمیونٹی کی طرف سے پول ریگسٹس

اگر آپ نے کسی کیڑے کی نشاندہی کی ہے اور آپ کے پاس حل ہے، تو براہ کرم پول ریگسٹس جمع کرائیں۔ اپنی مصنوعات سے متعلق مسائل کے بعد، ہم ان کمیونٹی کی بنیاد پر درستگیوں کو اگلی سب سے بڑی ترجیح دیتے ہیں۔ جائزہ لینے اور منظور ہونے کے بعد، ہم آپ کے حل کو ضم کریں گے اور آپ کی شراکت کو تسلیم کریں گے۔

3. مالی مدد

ذکر کردہ زمرے سے باہر کے مسائل کے لیے، آپ ان کا حل کرنے کے لئے مالی امداد فراہم کرنے کا انتخاب کر سکتے ہیں۔ ہر اوپن مسئلہ ایک آرڈر فارم سے منسلک ہے جہاں آپ مالی طور پر تعاون کر سکتے ہیں۔ ہم ان مسائل کو فراہم کردہ فنڈنگ کی رقم کی بنیاد پر ترجیح دیتے ہیں۔

کمیونٹی کی شراکتیں

اوپن سورس اس وقت بڑھتا ہے جب اس کی کمیونٹی فعال ہو۔ چاہے آپ کیڑے حل نہیں کر رہے ہوں، کوڈ کی بہتریوں، دستاویز کے اپ ڈیٹس، سبقیں، یا کمیونٹی چینلز میں دوسروں کی مدد کے ذریعے شراکت دینے پر غور کریں۔ ہم بالعموم سب کو، ایک کمیونٹی کے طور پر، اوپن سورس کام کی مدد کرنے کی ترغیب دیتے ہیں۔

دوہرانے کے لیے، DefectiveCode کیڑے کو اس بنیاد پر ترجیح دے گا کہ وہ ہمارے ادائیگی شدہ پروڈکٹس، کمیونٹی کی پول ریگسٹس اور مسائل کے لئے موصولہ مالی مدد پر کس طرح اثر انداز ہوتے ہیں۔

لائسنس - MIT لائسنس

کاپی رائٹ © Defective Code, LLC. تمام حقوق محفوظ ہیں

یہاں پر کسی بھی شخص کو یہ سافٹ ویئر اور اس سے وابستہ دستاویزات کی کاپی حاصل کرنے کی اجازت دی جاتی ہے (جسے "سافٹ ویئر" کہا جاتا ہے)، تاکہ وہ سافٹ ویئر میں کسی بھی پابندی کے بغیر کام کر سکے، بشمول بغیر کسی حد کے، استعمال کرنے، کاپی کرنے، ترمیم کرنے، یکجا کرنے، شائع کرنے، تقسیم کرنے، ذیلی لائسنس دینے اور/یا سافٹ ویئر کی کاپیوں کو بیچنے کے حقوق حاصل کرنے، اور ان لوگوں کو اجازت دینے کا کہ جنہیں سافٹ ویئر فراہم کیا گیا ہے، کہ وہ ایسا کرسکیں، مندرجہ ذیل شرائط کے تابع:

اوپر کا کاپی رائٹ نوٹس اور یہ اجازت نامہ سافٹ ویئر کی تمام کاپیوں یا اہم حصوں میں شامل کیا جائے گا۔

یہ سافٹ ویئر "جیسا ہے" فراہم کیا جاتا ہے، بغیر کسی قسم کی وارنٹی، واضح یا مضمر، بشمول لیکن محدود نہیں، مارکیٹ ایبیلٹی، کسی خاص مقصد کے لئے موزونیت اور خلاف ورزی کے وارنٹیوں کے۔ کسی بھی صورت میں مصنفین یا کاپی رائٹ ہولڈرز کسی بھی دعوے، نقصانات یا دیگر ذمہ داریوں کے لئے ذمہ دار نہیں ہوں گے، چاہے وہ معاہدے کے ایکشن، غلطی یا کسی اور طریقے سے ہو، جو سافٹ ویئر یا سافٹ ویئر کے استعمال یا دیگر معاملات سے پیدا ہو، یا اس سے متعلق ہو۔