سبق کا ویڈیو دیکھیں: کرپٹوگرافک رسیدات کے ساتھ AI ایجنٹس کی حفاظت
(سبق کا ویڈیو اور تھمب نیل مائیکروسافٹ مواد ٹیم کے ذریعہ مرج کے بعد شامل کیا جائے گا ، سبق 14 / 15 کے نمونہ سے میل کھاتے ہوئے.)
یہ سبق درج ذیل موضوعات کا احاطہ کرے گا:
اس سبق کو مکمل کرنے کے بعد، آپ جان لیں گے کہ کیسے:
تصور کریں کہ آپ نے Contoso Travel کے لیے ایک AI ایجنٹ تعینات کیا ہے۔ ایجنٹ گاہک کی درخواستیں پڑھتا ہے، پروازوں کے API کو کال کرتا ہے آپشنز دیکھنے کے لیے، اور گاہک کی جانب سے سیٹ بک کرتا ہے۔ پچھلے سہ ماہی میں، ایجنٹ نے 50,000 بکنگز کا عمل کیا۔
آج ایک آڈیٹر آتا ہے۔ وہ ایک سادہ سوال پوچھتا ہے: “مجھے دکھائیں کہ آپ کے ایجنٹ نے کیا کیا۔”
آپ اپنی لاگ فائلیں حوالے کرتے ہیں۔ آڈیٹر انہیں دیکھتا ہے اور مشکل سوال پوچھتا ہے: “میں کیسے جان سکتا ہوں کہ ان لاگز میں ترمیم نہیں کی گئی؟”
یہ آڈٹ ٹریل کا مسئلہ ہے۔ آج کل زیادہ تر ایجنٹ کی جگہیں ان پر انحصار کرتی ہیں:
ان میں سے کوئی بھی آڈیٹر کے سوال کا جواب اس کے بغیر نہیں دے سکتا کہ وہ کسی پر اعتماد کرے (آپ، آپ کا کلاؤڈ فراہم کنندہ، آپ کے ڈیٹا بیس فراہم کنندہ)۔ اندرونی استعمال کے لیے یہ اعتماد قابلِ قبول ہوتا ہے۔ ریگولیٹڈ ورک لوڈز (فنانس، ہیلتھ کیئر، EU AI ایکٹ کے تابع) کے لیے یہ قابل قبول نہیں ہے۔
کرپٹوگرافک رسیدات اس مسئلہ کو حل کرتی ہیں کیونکہ ہر ایجنٹ کے عمل کی آزاد تصدیق ممکن ہوتی ہے۔ آڈیٹر کو آپ پر اعتماد کرنے کی ضرورت نہیں ہے۔ انہیں صرف آپ کی پبلک کلید اور خود رسید کی ضرورت ہوتی ہے۔
رسید ایک JSON آبجیکٹ ہے جو درج کرتا ہے کہ ایجنٹ نے کیا کیا، اور اسے ڈیجیٹل دستخط کے ساتھ دستخط کیا گیا ہوتا ہے۔
flowchart LR
A[ایجنٹ آلہ کو بلاتا ہے] --> B[رسید کا مواد تیار کریں]
B --> C[JSON RFC 8785 کو معیاری بنائیں]
C --> D[SHA-256 ہیش]
D --> E[Ed25519 دستخط کریں]
E --> F[دستخط کے ساتھ رسید]
F --> G[آڈیٹر آف لائن تصدیق کرتا ہے]
G --> H{کیا دستخط درست ہے؟}
H -- yes --> I[چھیڑ چھاڑ کا ثبوت]
H -- no --> J[رسید مسترد کردی گئی]
ایک کم از کم رسید یوں دکھتی ہے:
{
"type": "agent.tool_call.v1",
"agent_id": "contoso-travel-bot",
"tool_name": "lookup_flights",
"tool_args_hash": "sha256:a3f9c1...",
"result_hash": "sha256:7b2e1d...",
"policy_id": "contoso-travel-policy-v3",
"timestamp": "2026-04-25T14:30:00Z",
"sequence": 47,
"previous_receipt_hash": "sha256:9d4e6a...",
"signature": {
"alg": "EdDSA",
"sig": "c5af83...",
"public_key": "8f3b2c..."
}
}
تین خصوصیات کام کر رہی ہیں:
دستخط۔ رسید ایجنٹ کے گیٹ وے کے ذریعہ Ed25519 پرائیویٹ کی سے دستخط کی جاتی ہے۔ جو کوئی بھی متعلقہ پبلک کی رکھتا ہے، وہ دستخط کو آف لائن تصدیق کر سکتا ہے۔ کسی بھی فیلڈ میں چھیڑ چھاڑ دستخط کو غلط بنا دیتی ہے۔
کینونیکل انکوڈنگ۔ دستخط کرنے سے پہلے، رسید JSON کینونیکلائزیشن اسکیم (JCS, RFC 8785) سے سیریلائز کی جاتی ہے۔ یہ اس بات کو یقینی بناتا ہے کہ دو مختلف عمل درآمدات جو ایک ہی منطقی رسید تیار کرتے ہیں بائٹ کی سطح پر بالکل ایک جیسے آؤٹ پٹ دیتے ہیں۔ بغیر کینونیکلائزیشن کے مختلف JSON سیریلائزرز مختلف دستخط بنائیں گے۔
ہیش چیننگ۔ previous_receipt_hash فیلڈ ہر رسید کو اس سے پہلے والی رسید سے مربوط کرتا ہے۔ ایک رسید کو ہٹانے یا دوبارہ ترتیب دینے سے اس کے بعد کی ہر رسید ٹوٹ جاتی ہے۔ چھیڑ چھاڑ چین کی سطح پر نظر آ جاتی ہے چاہے انفرادی دستخطوں کو نظر انداز کیا جائے۔
یہ خصوصیات مل کر تین ضمانتیں فراہم کرتی ہیں:
رسید بنانے کے لیے آپ کو کوئی خاص لائبریری درکار نہیں۔ کرپٹوگرافک بنیادیات وسیع پیمانے پر دستیاب ہیں اور منطق چند دہائیاں Python کی لائنیں ہیں۔
code_samples/18-signed-receipts.ipynb میں ہینڈز آن مشق مکمل عمل دکھاتی ہے۔ خلاصہ ورژن:
import json
import hashlib
import base64
from nacl import signing
from jcs import canonicalize # آر ایف سی 8785 کینونیکل JSON
def b64url_nopad(data: bytes) -> str:
return base64.urlsafe_b64encode(data).decode("ascii").rstrip("=")
def sha256_canonical(obj) -> str:
"""SHA-256 of a Python object's JCS-canonical JSON form."""
return f"sha256:{hashlib.sha256(canonicalize(obj)).hexdigest()}"
# ایک دستخطی کلید تیار کریں یا لوڈ کریں (پیداوار میں، اسے کلید کے ذخیرے میں محفوظ کریں)
signing_key = signing.SigningKey.generate()
verify_key = signing_key.verify_key
# رسید کے مواد کو تیار کریں (ابھی دستخط نہیں)
tool_args = {"origin": "SYD", "destination": "LAX"}
tool_result = [{"flight": "QF11", "price": 1850, "stops": 0}]
payload = {
"type": "agent.tool_call.v1",
"agent_id": "contoso-travel-bot",
"tool_name": "lookup_flights",
"tool_args_hash": sha256_canonical(tool_args),
"result_hash": sha256_canonical(tool_result),
"policy_id": "contoso-travel-policy-v3",
"timestamp": "2026-04-25T14:30:00Z",
"sequence": 0,
"previous_receipt_hash": None,
}
# معیاری بنائیں، ہیش کریں، دستخط کریں۔
canonical_bytes = canonicalize(payload)
message_hash = hashlib.sha256(canonical_bytes).digest()
signature_bytes = signing_key.sign(message_hash).signature
# ایک منظم دستخطی آبجیکٹ منسلک کریں۔
receipt = {
**payload,
"signature": {
"alg": "EdDSA",
"sig": b64url_nopad(signature_bytes),
"public_key": b64url_nopad(bytes(verify_key)),
},
}
یہی پورا دستخطی عمل ہے۔ نوٹ بک میں ہر قدم کی وضاحت کی گئی ہے۔
تصدیق الٹا عمل ہے:
import base64
import hashlib
from nacl import signing
from nacl.exceptions import BadSignatureError
from jcs import canonicalize
def b64url_decode(s: str) -> bytes:
padding = "=" * ((4 - len(s) % 4) % 4)
return base64.urlsafe_b64decode(s + padding)
def verify_receipt(receipt: dict) -> bool:
# دستخط ایک منظم شئے ہے: {"alg", "sig", "public_key"}۔
sig_obj = receipt.get("signature")
if not sig_obj or sig_obj.get("alg") != "EdDSA":
return False
# اصل میں دستخط شدہ پے لوڈ کو دوبارہ تشکیل دیں (دستخط کے علاوہ سب کچھ)۔
payload = {k: v for k, v in receipt.items() if k != "signature"}
canonical_bytes = canonicalize(payload)
message_hash = hashlib.sha256(canonical_bytes).digest()
try:
verify_key = signing.VerifyKey(b64url_decode(sig_obj["public_key"]))
verify_key.verify(message_hash, b64url_decode(sig_obj["sig"]))
return True
except BadSignatureError:
return False
یہ فنکشن ایک رسید لیتا ہے اور اگر دستخط درست ہو تو True واپس کرتا ہے، ورنہ False۔ کوئی نیٹ ورک کال نہیں، کوئی سروس انحصار نہیں، کسی تیسرے فریق پر اعتماد کی ضرورت نہیں۔
چھیڑ چھاڑ کی شناخت کی مشق دیکھنے کے لیے، نوٹ بک ان کاموں کی وضاحت کرتی ہے:
tool_args_hash فیلڈ کے ایک بائٹ میں ترمیم کرنا۔یہ عملی مظاہرہ ہے کہ رسیدات چھیڑ چھاڑ کا پتہ دیتی ہیں: کوئی بھی چھوٹا سا ترمیم دستخط کو توڑ دیتی ہے۔
ایک واحد دستخط شدہ رسید ایک عمل کی حفاظت کرتی ہے۔ رسیدات کی ایک چین ایک سلسلہ کی حفاظت کرتی ہے۔
flowchart LR
R0[رسید ۰<br/>ابتدائی] --> R1[رسید ۱]
R1 --> R2[رسید ۲]
R2 --> R3[رسید ۳]
R1 -. previous_receipt_hash .-> R0
R2 -. previous_receipt_hash .-> R1
R3 -. previous_receipt_hash .-> R2
ہر رسید اس سے پہلے کی رسید کا ہیش ریکارڈ کرتی ہے۔ رسید 2 کو خاموشی سے ہٹانے کے لیے، حملہ آور کو یا تو:
previous_receipt_hash فیلڈ میں ترمیم کرنی ہوگی (جو رسید 3 کے دستخط کو توڑ دے گا)، یااگر پرائیویٹ کی ہارڈویئر کی والٹ میں محفوظ ہو اور آپ ہر رسید کے ساتھ پبلک کی شائع کریں، تو دونوں حملے بغیر پتہ لگائے ممکن نہیں۔
نوٹ بک درج ذیل مراحل دکھاتی ہے:
previous_receipt_hash پچھلی رسید کے حقیقی ہیش سے میل کھاتا ہے۔یہ ہے وہ آڈٹ ٹریل جو ایک بیرونی آڈیٹر بغیر آپ پر اعتماد کیے تصدیق کر سکتا ہے۔
یہ سبق کا سب سے اہم حصہ ہے۔ رسیدات طاقتور ہیں لیکن ان کی طاقت محدود ہے۔
رسیدات تین چیزیں ثابت کرتی ہیں:
رسیدات یہ ثابت نہیں کرتیں:
policy_id میں حوالہ دی گئی پالیسی کی واقعی جانچ ہوئی، یا اگر جانچی گئی تو اس نے اس عمل کی اجازت دی ہوتی۔ رسید صرف دعویٰ کو ریکارڈ کرتی ہے، نفاذ کو نہیں۔یہ حد بندی دو وجوہات کی وجہ سے اہم ہے:
ایک عام غلطی یہ سمجھنا ہے کہ “ہمارے پاس رسیدات ہیں” مطلب “ہم حکومت یافتہ ہیں”۔ ایسا نہیں ہے۔ رسیدات بنیاد ہیں۔ حکومت وہ نظام ہے جو آپ اس بنیاد پر بناتے ہیں۔
اوپر کا آئٹم 3 اپنی جگہ کے قابل ہے: ایک عمل کی رسید کہتی ہے “یہ کی نے اس مواد پر دستخط کیا”، کبھی نہیں کہتی “ایک انسان نے اس کی اجازت دی۔” اعلیٰ خطرے والے عمل (رقم کی واپسی، حذف، وائر ٹرانسفر) کے لیے، حکومت کے فریم ورک خاص طور پر وہی گمشدہ بیان چاہتے ہیں، اور اسے آپ نے اس سبق کے وہی بنیادیات استعمال کر کے تیار کیا جا سکتا ہے۔
اس سے متعلقہ نوٹ بک code_samples/human-authorization-receipts.ipynb ایک دوسرا رسیدی قسم، human.approval.v1 شامل کرتی ہے، جو سبق کی رسیدوں کی طرح چھپے ہوئے شکل میں ہے (ایک ٹائپڈ پے لوڈ جو Ed25519 سے اس کے canonical SHA-256 پر دستخط شدہ ہے، اور دستخط کا آبجیکٹ دستخط شدہ بائٹس کے باہر ہے)۔ ایک نامزد منظوری دہندہ دستخط کرتا ہے پورے کینونیکل عمل اور اس کے ہیش پر عمل درآمد سے پہلے؛ ایجنٹ کی عمل کی رسید میں وہی عمل کا ہیش اور parent_approval_ref، منظوری کی receipt_hash ہوتی ہے، جس کا کنونشن چین میں previous_receipt_hash جیسا ہے۔ ایک verify_chain دونوں دستاویزات کو الگ الگ key رجسٹریز (منظور کرنے والے کیز بمقابلہ ایجنٹ کیز) کے تحت چلاتا ہے، تو کوڈ راستہ مشترک ہے لیکن اختیاریں کبھی نہیں۔
یہ پراپرٹی، غور سے بیان کی گئی: انسان نے بالکل یہ عمل منظور کیا، اور ایجنٹ نے وہی منظور شدہ عمل انجام دیا۔ نوٹ بک کی انکار کی مثالیں اس پراپرٹی کو حقیقت بناتی ہیں نہ کہ صرف دعویٰ:
ہر ناکامی ایک مخصوص وجہ کے ساتھ انکار کرتی ہے، تو ایک آڈیٹر انکار پڑھ کر بتا سکتا ہے کہ آیا اختیار پرانی ہو گئی یا انجام دیا گیا عمل بدل گیا۔ نوٹ بک کا اصول یہ سکھاتا ہے: ایک دستخط شدہ منظوری خود اختیار نہیں ہے۔ اختیار تب ہوتی ہے جب دونوں رسیدات اسی کینونیکل عمل سے عمل درآمد کے وقت بندھی ہوں۔ اسی سبق کے Internet-Draft (draft-farley-acta-signed-receipts) میں کو-دستخطی راستہ اس طرز کا معیار ہے۔
اس سبق کے Python کوڈ کو جان بوجھ کر کم سے کم رکھا گیا ہے تاکہ آپ ہر لائن پڑھیں اور بالکل سمجھیں کہ کیا ہو رہا ہے۔ پیداواری استعمال میں، آپ کے پاس دو اختیارات ہیں:
براہ راست کرپٹوگرافک بنیادیات پر تعمیر کریں۔ اوپر دیکھی گئی 50 لائنیں بہت سے استعمال کے لیے کافی ہیں۔ PyNaCl (Ed25519) اور jcs پیکیج (کینونیکل JSON) اچھی طرح سے دیکھ بھال شدہ اور آڈٹ کی گئی لائبریریاں ہیں۔
پیداواری رسید لائبریری استعمال کریں۔ کئی اوپن سورس پروجیکٹس اسی طرز کو اضافی خصوصیات کے ساتھ نافذ کرتے ہیں (کی گھماؤ، بیچ تصدیق، JWK سیٹ کی تقسیم، پالیسی انجنز کے ساتھ انضمام):
draft-farley-acta-signed-receipts, ریویژن 02) ہے جو فی الحال معیاراتی عمل میں ہے، ایک مشترکہ تعمیل مجموعہ (agent-governance-testvectors) کے ساتھ جس کے خلاف آزاد عمل درآمدات بائٹ کی سطح پر یکساں کینونیکل آؤٹ پٹ کی تصدیق کرتی ہیں۔protect-mcp (npm) اور @veritasacta/verify (npm) پیکیجز Node پر مبنی رسید دستخط اور آف لائن تصدیق کی عمل درآمد فراہم کرتے ہیں، جس کا مقصد کسی بھی MCP سرور کو چھیڑ چھاڑ سے بچانے والا آڈٹ ٹریل دینا ہے، جس میں ایک روک کر دستخط والا طریقہ شامل ہے جس میں ایک معطل عمل ایک منظوری رسید جاری کرتا ہے جو عمل کے ہیش سے بندھی ہوتی ہے (ڈیسک ٹاپ فلو میں WebAuthn کی حمایت کے ساتھ)، وہی منظوری-رسید کا نمونہ جو انسانی اجازت دہندگی نوٹ بک میں ہے۔pip install nobulex) Python میں Ed25519 + JCS دستخط کے نمونے کو LangChain اور CrewAI انضمامات کے ساتھ فراہم کرتا ہے، جس میں شائع شدہ کراس-ویلڈیٹیشن ٹیسٹ ویکٹرز اور AWASP PR #2210 کے ذریعے فراہم کردہ تعمیل میپنگ شامل ہے۔اپنا لائبریری بنانے اور استعمال کرنے کے درمیان فیصلہ JWT لائبریری لکھنے اور ٹیسٹ شدہ لائبریری استعمال کرنے کے فیصلے سے مماثل ہے: دونوں مناسب ہیں؛ لائبریری وقت بچاتی ہے اور آڈٹ سرفیس کم کرتی ہے؛ شروع سے بنانا آپ کو ہر بنیادی چیز سمجھنے پر مجبور کرتا ہے۔ یہ سبق آپ کو شروع سے سکھاتا ہے تاکہ آپ دونوں انتخاب کے لیے بنیاد رکھ سکیں۔
عملی مشق پر جانے سے پہلے اپنی سمجھ کا امتحان لیں۔
1. رسید ایجنٹ کی پرائیویٹ Ed25519 کلید سے دستخط کی جاتی ہے۔ آڈیٹر کے پاس صرف پبلک کلید ہے۔ کیا آڈیٹر رسید کو آف لائن تصدیق کر سکتا ہے؟
2. ایک حملہ آور نے رسید کے policy_id فیلڈ میں ترمیم کی تاکہ دعویٰ کرے کہ اسے زیادہ نرم پالیسی کے تحت حکمرانی حاصل تھی۔ دستخط اصل پے لوڈ پر تھا۔ تصدیق کے دوران کیا ہوتا ہے؟
3. رسید میں خام دلائل اور نتائج کی جگہ tool_args_hash اور result_hash کیوں شامل ہیں؟
4. previous_receipt_hash فیلڈ ہر رسید کو اس کے پیش رو سے جوڑتا ہے۔ اگر حملہ آور چین کے وسط سے ایک رسید کو خاموشی سے حذف کرے تو کیا غلط ہو جاتا ہے؟
5. ایک رسید صاف ستھری تصدیق کرتی ہے۔ کیا اس سے یہ ثابت ہوتا ہے کہ ایجنٹ کی کارروائی درست، معقول، یا پالیسی کے مطابق تھی؟
code_samples/18-signed-receipts.ipynb کھولیں اور چاروں سیکشن مکمل کریں:
اسٹریچ چیلنج 1: رسید اسکیمہ میں اپنی پسند کا ایک اضافی فیلڈ شامل کریں (مثلاً، ٹریسنگ کے لیے درخواست ID)، کینونیکل دستخطی منطق کو اسے شامل کرنے کے لیے اپ ڈیٹ کریں، اور تصدیق کریں کہ رسید اب بھی مکمل طور پر کام کرتی ہے۔ پھر دستخط کے بعد فیلڈ کو تبدیل کریں اور تصدیق ناکام ہونے کی تصدیق کریں۔ یہ آپ کو یہ سمجھنے پر مجبور کرتا ہے کہ کینونیکل اینکوڈنگ کے ہر بائٹ کا دستخط پر کیا اثر ہوتا ہے۔
اسٹریچ چیلنج 2: اپنی دو رسیدوں کو SHA-256 ہیش کے ذریعہ اکٹھا کریں (ان کے کینونیکل بائٹس کو ایک تعین شدہ ترتیب میں جوڑیں) اور حاصل ہونے والا ہیش تیسری رسید کے نئے فیلڈ کے طور پر ڈالیں، پھر اس پر دستخط کریں۔ تصدیق کریں کہ تینوں رسیدیں اب بھی مکمل طور پر کام کر رہی ہیں۔ آپ نے ایک مرحلہ انضمام کا ثبوت بنایا ہے: جو کوئی بھی تیسری رسید رکھتا ہے وہ ثابت کر سکتا ہے کہ پہلی دو رسیدیں اس وقت موجود تھیں جب اس پر دستخط ہوئے تھے، بغیر ان کے مواد ظاہر کیے۔ یہ وہ پیٹرن ہے جو بڑے پیمانے پر منتخب انکشاف رسیدیں استعمال کرتی ہیں (مرکل تعہدات، RFC 6962)۔
کرپٹوگرافک رسیدیں AI ایجنٹس کو ایک آڈٹ ٹریل دیتی ہیں جو کہ:
یہ انپٹ کی تصدیق، پالیسی نفاذ، یا شناخت کے ڈھانچے کا متبادل نہیں ہیں بلکہ ان تہوں کی بنیاد ہیں۔ جب آپ ایجنٹس کو ریگولیٹڈ ورک لوڈز، کثیر تنظیمی ورک فلو، یا کسی بھی ایسی جگہ پر تعینات کر رہے ہوں جہاں مستقبل کا آڈیٹر آپ پر قابل اعتماد ہونے کا مفروضہ نہیں کر سکتا، رسیدیں وہ طریقہ ہیں جن سے آپ آڈٹ ٹریل کو ایماندار بناتے ہیں۔
سب سے اہم بات: رسیدیں ثابت کرتی ہیں کہ کس نے کیا کہا اور کب۔ یہ ثابت نہیں کرتیں کہ جو کہا گیا وہ سچ یا درست تھا۔ اس امتیاز کو مضبوطی سے تھامے رکھیں۔ یہ ایماندار Herkunft نظام اور گمراہ کن نظام کے درمیان فرق ہے۔
جب آپ اس سبق سے فارغ ہو کر حقیقی ماحول میں رسید دستخط شدہ ایجنٹس کو تعینات کرنے کے لیے تیار ہوں:
https://your-org.example.com/.well-known/agent-keys.json۔Microsoft Foundry Discord میں شامل ہوں تاکہ دوسرے سیکھنے والوں سے ملاقات کریں، دفتر کے اوقات میں شرکت کریں اور اپنے AI ایجنٹس کے سوالات پوچھیں۔
یہ سبق سنگل رسید دستخط اور ہیش چینڈ سلسلے کو کور کرتا ہے۔ وہی اصول کئی مزید پیچیدہ پیٹرنز میں شامل ہوتے ہیں جن سے آپ کا گورننس کا طریقہ کار جب نکھرتا ہے تو آپ کو ملیں گے:
authorization_*) اور بعد از عمل (result_*) آدوں میں تقسیم کرتے ہیں جن کے اپنے دستخط ہوتے ہیں، یہ مفید ہوتا ہے جب اجازت کا فیصلہ اور مشاہدہ شدہ نتیجہ مختلف اداکاروں یا مختلف اوقات میں پیدا ہوتے ہیں۔ یہ اس سبق میں سکھائی گئی رسید فارمیٹ پر اضافی طور پر بنتا ہے۔result_hash میں رکھتے ہیں۔ حقیقی دنیا کے پیلوڈ اکثر ایک ٹول کال کے نتیجہ سے زیادہ پیچیدہ ہوتے ہیں: فیصلہ سازی سے پہلے کی دلیل (ماڈل کی پیش گوئی، غور شدہ اختیارات، شواہد اور اس کی تکمیل، خطرے کی حالت، جوابدہی چین، گیٹ کا نتائج) سب پیلوڈ میں رہ سکتے ہیں، جو ایک رسید کے ذریعہ محفوظ ہوتا ہے۔ یہ رسید کے فارمیٹ کو کم سے کم رکھتا ہے جبکہ پیلوڈ اسکیموں کو شعبہ بہ شعبہ ترقی دیتا ہے۔signature.alg فیلڈ میں ML-DSA-65 (NIST کے بعد کے کوانٹم دستخط کا معیار) شامل ہو سکتا ہے جب آپ کو منتقل ہونا ہو۔ ایک عبوری مدت کا منصوبہ بنائیں جہاں رسیدیں دوہری دستخط شدہ ہوں۔ڈس کلیمر: یہ دستاویز AI ترجمہ سروس Co-op Translator کے ذریعے ترجمہ کی گئی ہے۔ جبکہ ہم درستگی کے لیے کوشاں ہیں، براہ کرم اس بات سے آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا عدم درستیاں ہو سکتی ہیں۔ اصل دستاویز اپنے مادری زبان میں مستند ماخذ سمجھی جائے گی۔ حساس معلومات کے لیے پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کی ذمہ داری ہم قبول نہیں کرتے۔