आपके कोडिंग एजेंट्स अब वह दोबारा डीबग नहीं करेंगे जो आप पहले ही ठीक कर चुके हैं।
Claude Code, Codex, Cursor और इस मशीन के बाकी एजेंट्स हर सेशन पहले से डिस्क पर सेव करते हैं।
deja महीनों पुराने समेत सब कुछ इंडेक्स करता है और काम का हिस्सा
उस एजेंट को देता है जो अभी काम कर रहा है।
```sh
curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh
deja install --auto
```
रिकॉल LongMemEval-S पर 97.2% R@5 सभी 500 प्रश्न · MemPalace 96.6%, agentmemory 95.2% उन्हीं 19,195 सेशन पर: 100 में 19 पहले स्थान पर, अगला सबसे अच्छा 14
टोकन agentmemory के आधे टोकन पहले से हल किए काम पर 53,558 बनाम 104,974 हर टर्न 477 टोकन की टूल परिभाषाएँ, सात में सबसे कम
इंडेक्सिंग 19,195 सेशन इंडेक्स करने में 13.6 s सात में अगला: 72 s पहले जवाब तक 26 ms, खोज की माध्यिका 97 ms
## इंस्टॉल
```sh
curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh
deja install --auto
```
स्क्रिप्ट बाइनरी को `~/.local/bin` में रखती है। अगर यह डायरेक्टरी अभी आपके `PATH` में नहीं है, तो उसी शेल में दूसरा कमांड नहीं मिलेगा: स्क्रिप्ट जो `next:` लाइन छापती है (उसमें पूरा पाथ है) उसे चलाएँ, या `PATH` वाली लाइन जुड़ने के बाद नया शेल खोलें।
अगर `raw.githubusercontent.com` तक पहुँच नहीं है, तो उसी वर्शन का npm मिरर है:
```sh
npm i -g @vshulcz/deja-vu --registry=https://registry.npmmirror.com
deja install --auto
```
इंस्टॉल में दस सेकंड, इंडेक्स में करीब दस। दूसरी कमांड हर मिले हुए एजेंट में MCP रिकॉल जोड़ती है, जहाँ एजेंट समर्थन
करता है वहाँ सेशन शुरू होते ही रिकॉल चालू करती है, और पहला इंडेक्स बना देती है — ताकि अगला सेशन किसी चीज़ का
इंतज़ार न करे।
नया एजेंट सेशन खोलिए और महीनों पुरानी किसी चीज़ के बारे में पूछिए:
> क्या हमने पहले jwt refresh rotation पर काम किया था? अपनी मेमोरी में देखो
पूछने की ज़रूरत भी नहीं: ऑटोमैटिक रिकॉल चालू हो तो सेशन खुलते ही एजेंट को पता होता है कि इस प्रोजेक्ट में क्या हल
हो चुका है। खुद देखना हो तो `deja` चलाइए।
opencode, DeepSeek Harness, Zed, Kimi Code, Codex CLI, Grok Build, OpenClaw, pi और Hermes के लिए उनके अपने
इकोसिस्टम में पैकेज भी हैं, उन लोगों के लिए जो एक्सटेंशन वहीं से लगाते हैं:
```sh
opencode plugin opencode-deja
dsh plugin --profile web add dsh-deja
# Zed: एक्सटेंशन पैनल में deja खोजिए
# Kimi Code: /plugins install https://github.com/vshulcz/deja-vu
# Codex CLI: codex plugin marketplace add https://github.com/vshulcz/deja-vu && codex plugin add deja-vu@deja-vu
# Grok Build: grok plugin marketplace add vshulcz/deja-vu && grok plugin install deja
openclaw plugins install clawhub:@vshulcz/openclaw-deja && openclaw config set plugins.entries.deja-vu.hooks.allowConversationAccess true
pi install npm:@vshulcz/pi-deja
hermes plugins install deja-memory
```
`deja install --auto` ऊपर वाला सब कुछ पहले ही जोड़ देता है, इसलिए दोनों में से कोई एक रास्ता काफ़ी है। दोनों साथ
में भी दिक्कत नहीं करते: हर पैकेज पढ़ता है कि `deja install` ने क्या लिखा और सिर्फ़ छूटा हुआ हिस्सा भरता है — न टूल
दो बार रजिस्टर होते हैं, न रिकॉल दो बार चलता है। विवरण [`extensions/`](../../extensions) में है।
यही खोज एक skill के रूप में भी है, जिसे `SKILL.md` पढ़ने वाला कोई भी एजेंट लगा सकता है:
```sh
npx skills add https://github.com/vshulcz/deja-vu --skill deja-search # skills CLI: Claude Code, Cursor, Goose, Copilot…
openclaw skills install @vshulcz/deja-search # ClawHub
hermes skills install vshulcz/deja-vu/skills/deja-search # Hermes
```
skill आपके इंस्टॉल किए हुए `deja` बाइनरी को बुलाता है, अपना अलग नहीं रखता।
और तरीके: `brew install deja-vu`,
`go install github.com/vshulcz/deja-vu/cmd/deja@latest`, या बिना कुछ इंस्टॉल किए आज़माने के लिए
`npx @vshulcz/deja-vu "क्वेरी"`। Windows पर इंस्टॉल स्क्रिप्ट `unsupported OS` कहकर रुक जाती है क्योंकि वह एक shell
स्क्रिप्ट है; `scoop install deja-vu` चलाइए (यह Scoop के main bucket में है) या `winget install vshulcz.deja-vu`, या [नवीनतम रिलीज़](https://github.com/vshulcz/deja-vu/releases/latest) से
`deja-vu__windows_amd64.zip` लीजिए और `deja.exe` को `PATH` में रखिए।
सिर्फ़ बाइनरी भी पूरा इंस्टॉल है: इंडेक्सिंग, खोज, `show`, `ctx`, `blame`, `--json` और क्रेडेंशियल हटाने के लिए और कुछ
नहीं चाहिए। `deja install` का काम है MCP को आपके एजेंट्स से जोड़ना और सेशन शुरू होने पर रिकॉल चालू करना — उपयोगी,
पर वैकल्पिक।
## खुद खोजिए
टर्मिनल में बिना आर्ग्युमेंट के `deja` सभी एजेंट्स के इतिहास पर एक खोज स्क्रीन खोलता है। सबसे ऊपर वे सेशन होते हैं
जो आपके बिना commit किए बदलाव के पीछे हैं, फिर इस प्रोजेक्ट के हाल के सेशन, और टाइप करते-करते सूची छोटी होती जाती है।
- `↑↓` सेशन चुनता है, `↵` उसे मिलान वाली जगह पर खोलता है, `n` और `N` मिलानों के बीच चलते हैं, `esc` वापस ले जाता है। सेशन के अंदर `/` कोई शब्द ढूँढता है, `]` और `[` आपके पूछे सवालों के बीच कूदते हैं।
- सर्च बॉक्स फ़िल्टर लेता है: कोलन के साथ एजेंट (`codex:`), `today`, `yesterday`, `week`, `month` और `in:`।
- `r` सेशन को उसी एजेंट में फिर से शुरू करता है जिसने उसे लिखा। `o` उसे किसी भी दूसरे एजेंट में आगे बढ़ाता है, जो इससे शुरू करता है कि सेशन ने क्या पूछा, क्या तय किया और क्या खुला छोड़ा।
- `tab` इस प्रोजेक्ट, सभी प्रोजेक्ट्स और Deleted के बीच बदलता है — Deleted वे सेशन हैं जिन्हें उनके एजेंट ने मिटा दिया पर deja के पास अब भी हैं; `R` किसी एक को वापस रख देता है।
- `?` सारी कुंजियाँ दिखाता है, `^k` में बाकी है (सेशन id या प्रोजेक्ट पाथ कॉपी करना, सेशन भूल जाना), सूची में `q` बाहर निकलता है; `esc` एक कदम पीछे जाता है और खाली सर्च बॉक्स से बाहर निकलता है।
`DEJA_TUI=0` के साथ यह स्क्रीन की जगह सादा टेक्स्ट सारांश छापता है, जो `deja brief` भी देता है। पाइप में यह छापता है
कि क्या इंडेक्स हुआ है और आगे कौन-सी कमांड चलानी है।
## इससे क्या मिलता है
**Codex में हल हुआ, Claude को याद है।** इकतालीस कोडिंग एजेंट हर बातचीत को लोकल फ़ाइलों में लिखते हैं, और deja उन
फ़ाइलों को एक ऐसी मेमोरी परत में बदल देता है जिसे वे सब पढ़ सकते हैं।
| | |
| --- | --- |
| **पीछे की तरफ़ खोज** | `deja "connection pool exhausted"` गीगाबाइट खंगालता है, deja इंस्टॉल करने से पहले का सब कुछ भी। स्वाभाविक भाषा का सवाल प्रासंगिकता वाले मोड पर चला जाता है। समय एक संकेत है, फ़िल्टर नहीं। |
| **एजेंट्स के आर-पार रिकॉल** | MCP का `deja` टूल `recall` मोड में किसी भी एजेंट के भीतर से जवाब देता है कि «यह हमने तीन हफ़्ते पहले ठीक किया था», चाहे तब किसी ने भी किया हो। |
| **कॉम्पैक्शन के बाद भी बचा रहता है** | 43 कॉन्टेक्स्ट कॉम्पैक्शन पर मापा गया: सारांश ने 77% निर्णय और आपके चलाए हुए कमांड्स का 0.2% बचाया। बाकी 99.8% deja लौटाता है। Claude Code और Codex में deja कॉम्पैक्शन शुरू होते ही काम, फ़ाइलें और कमांड्स दर्ज कर लेता है और कॉम्पैक्शन के बाद एक बार लौटा देता है। |
| **काम करने के ठीक उसी क्षण रिकॉल** | एजेंट किसी फ़ाइल को बदलने या कमांड चलाने से पहले, `PreToolUse` हुक बताता है कि इस फ़ाइल को लेकर पहले क्या तय हुआ था, इस कमांड का वह रूप कौन-सा है जो यहाँ चलता है, या यह कि वह प्रोग्राम इस मशीन पर है ही नहीं। कमांड फ़ेल होने पर `PostToolUse` हुक दिखाता है कि इसी मशीन पर उसी एरर के बाद क्या चलाया गया था — ठीक वही जोड़ी जो एजेंट खुद नहीं पूछेगा। |
| **बातों को नहीं, काम को इंडेक्स करता है** | हर टर्न में खोली गई हर फ़ाइल, चलाया गया हर कमांड और उसका exit code, और वह सटीक हिस्सा जिसे किसी एडिट ने बदला। हर सारांश यही खोता है। |
इसके अलावा: `deja promote --state rejected` पलटे हुए निर्णय पर निशान लगाता है, और उसके बाद हर नतीजा दिखाता है
कि वह आज़माया और ख़ारिज किया गया था; नतीजा बताता है कि «इस सेशन की 4 फ़ाइलें तब से बदल चुकी हैं» और जब तय न कर
सके तो चुप रहता है; `deja sync ssh laptop` मेमोरी को मशीनों के बीच सिर्फ़ जोड़ते हुए ले जाता है, बीच में कोई क्लाउड
नहीं; `deja handoff --to codex` मौजूदा कॉन्टेक्स्ट को बाँध देता है ताकि किसी दूसरे एजेंट में काम आगे बढ़े; जानी-पहचानी
शक्ल वाली कुंजियाँ, टोकन, JWT और प्राइवेट की ब्लॉक इंडेक्सिंग के समय हटा दिए जाते हैं — हालाँकि पैटर्न मिलाना सीक्रेट
पहचानना नहीं है, और कोई अनजानी शक्ल निकल सकती है।
### अपना काम खुद बनाइए
`deja stats --card` सीधे टर्मिनल में बनाता है; फ़ाइल का नाम दीजिए तो आपकी प्रोफ़ाइल README के लिए SVG लिख देता है।
कहीं और प्रकाशित करने के लिए [उसे PNG में बदलिए](https://vshulcz.github.io/deja-vu/card/) — वह पेज आपके अपने
ब्राउज़र में ही बदलता है।
पूरा रेफ़रेंस [दस्तावेज़ साइट](https://vshulcz.github.io/deja-vu/) पर है।
## निजता
इंडेक्सिंग और खोज लोकल हैं। नेटवर्क सिर्फ़ `deja update`, `deja sync ssh`, `deja doctor` के भीतर वर्शन जाँच,
`deja embed` (जो आपके तय किए एंडपॉइंट पर जाता है; सिमेंटिक साइडकार बन जाने के बाद हर खोज भी, जो क्वेरी उसी एंडपॉइंट पर भेजती है), और किसी इंटरैक्टिव कमांड से दिन में एक बार नवीनतम रिलीज़ की
जाँच इस्तेमाल करते हैं। वह जाँच कोई सेशन डेटा नहीं भेजती; `DEJA_OFFLINE=1` या `DEJA_NO_UPDATE_NOTICE=1` उसे बंद
कर देता है।
क्रेडेंशियल इंडेक्सिंग के समय हटा दिए जाते हैं: AWS कुंजियाँ, `api_key=` और `token=` असाइनमेंट, bearer टोकन और नंगे
JWT, PEM प्राइवेट की ब्लॉक, अलग-अलग प्रदाताओं के टोकन, `scheme://user:pass@host` रूप वाले URL, ऐसे
हाई-एन्ट्रॉपी मान जिन पर कोई नियम नहीं बैठता, और गद्य में लिखे पासवर्ड — «the admin password is …», जहाँ पकड़ने
के लिए कोई विभाजक ही नहीं होता। मान `[redacted:]` बन जाता है और आस-पास का पाठ खोजने योग्य बना रहता है।
`deja share` और `deja sync export` निर्यात के समय एक बार और साफ़ करते हैं। पैटर्न मिलाना सीक्रेट पहचानना नहीं है:
जिस शक्ल को नियम नहीं जानते वह ज्यों-की-त्यों निकल सकती है — सुरक्षा मॉडल देखिए।
`deja forget` सेशन्स को दोबारा बने इंडेक्स से हटा देता है और एक समाधि-चिह्न छोड़ता है, ताकि अगला `deja index` उन्हें
मूल इतिहास से वापस न ला सके।
[सुरक्षा मॉडल](../../docs/SECURITY-MODEL.md) में डेटा प्रवाह, सफ़ाई की सीमाएँ, भरोसे की धारणाएँ और रिलीज़ सत्यापन दर्ज हैं।
## कमांड लाइन
टर्मिनल में अकेला `deja` ऊपर बताई गई खोज स्क्रीन खोलता है। क्वेरी के साथ, या नीचे की किसी भी कमांड के साथ, यह
नतीजा छापकर बाहर निकल जाता है:
```text
$ deja "jwt refresh token"
[claude] api · Jul 8 · 8f31c0a9 — 2 matches
login started failing after refresh token rotation; jwt kid mismatch in tests
fixed by reloading jwks cache after rotateKey and adding a clock-skew test
[codex] web · Jul 1 · b77d91e2 — 1 match
refresh token cookie needed SameSite=Lax in local callback flow
```
| कमांड | क्या करता है |
| --- | --- |
| `deja <क्वेरी>` | पूरे इतिहास में खोजता है। कई शब्द AND हैं, उद्धरण चिह्न लगातार पाठ माँगते हैं; सटीक मिलान न होने पर शब्द-रूप और मिलती-जुलती वर्तनी आज़माता है। |
| `deja` | टर्मिनल में, ऊपर वाली फ़ुल-स्क्रीन खोज। `deja brief` उसकी जगह टेक्स्ट सारांश छापता है: आज के सेशन, deja ने क्या दिया, हाल का काम और आज़माने लायक एक खोज। |
| `deja wip` | इस डायरेक्टरी में पिछला सेशन क्या कर रहा था: काम, क्या तय हुआ, हाथ में कौन-सी फ़ाइलें थीं, आख़िरी कमांड और वह फ़ेल हुआ या नहीं। सब रिकॉर्ड से निकाला गया, किसी के नोट्स पर निर्भर नहीं। |
| `deja blame <पथ>[:पंक्ति]` | किन सेशन्स ने इस फ़ाइल पर बात की, क्या तय हुआ और क्यों। पंक्ति संख्या देने पर: वह commit जिसने उसे आख़िरी बार बदला, और वह सेशन जिसने वह पंक्ति लिखी, या वह पाठ जिसे उस commit ने बदला। |
| `deja files <विषय>` | उलटी दिशा: किसी विषय पर हुए काम ने असल में किन फ़ाइलों को छुआ। |
| `deja how <टूल>` | इस मशीन पर यह असल में कैसे चलाया जाता है, असली आर्ग्युमेंट्स के साथ, उन कमांड्स से जो एजेंट पहले चला चुके हैं। |
| `deja fix <एरर>` | इस मशीन पर उसी एरर के बाद क्या चलाया गया, और जिसके बाद एरर दोबारा नहीं आया। कभी merge, force push या डिलीट नहीं। |
| `deja friction` | वे एरर जो तीन या उससे ज़्यादा अलग सेशन्स में मिलते हैं, और वे किन टूल्स से आए। |
| `deja ctx <क्वेरी>` | सबसे अच्छे नतीजे का Markdown सारांश, उसके बदले हुए कोड के साथ, सीधे प्रॉम्प्ट में डालने लायक। |
| `deja resume ` | मिले हुए सेशन को उसी टूल में दोबारा खोलता है जिसका वह है। |
| `deja view` | पूरी मेमोरी को एक लोकल HTML फ़ाइल में निर्यात करता है। कोई सर्वर नहीं, कुछ भी मशीन से बाहर नहीं जाता। |
| `deja doctor [--deep]` | स्व-जाँच; `--deep` के साथ इंडेक्स को स्रोत फ़ाइलों से मिलाकर सत्यापित करता है। |
| `deja mcp` | stdio पर MCP सर्वर — वही जिसे `deja install` जोड़ता है। |
पूरा रेफ़रेंस [कमांड दस्तावेज़](https://vshulcz.github.io/deja-vu/guide/commands.html) में है।
### MCP टूल्स
सर्वर सिर्फ़ एक टूल `deja` देता है, और `mode` पैरामीटर क्षमता चुनता है: `recall`, `context`, `blame`, `fix`,
`how`, `orient`, `remember`, `handoff`। `deja install` इसे खुद जोड़ देता है, इसलिए यह सिर्फ़ तब मायने रखता है जब आप किसी एजेंट को हाथ
से कॉन्फ़िगर करें। पुराने छह टूल नाम पहले से जुड़े क्लाइंट्स में चलते रहते हैं।
सात के बजाय एक टूल होना लागत का मामला है, शैली का नहीं। जुड़ा हुआ MCP सर्वर अपने टूल्स की परिभाषाएँ हर अनुरोध के
साथ भेजता है, इसलिए एजेंट ने कुछ बुलाया हो या नहीं, हर टर्न में उनका दाम चुकाया जाता है: यहाँ 477 टोकन, जबकि मापे
गए सात सर्वरों में सबसे बड़े का 8,283। deja का अपना आँकड़ा भी 828 था, जब तक स्कीमा को मोड वाले एक टूल तक नहीं
घटाया गया।
## समर्थित टूल्स
ऑटोमैटिक रिकॉल चालू हो तो Claude Code और Codex कॉम्पैक्शन शुरू होते ही मौजूदा रिकॉर्ड deja को सौंप देते हैं, और
deja वह रख लेता है जो सारांश अभी खोने वाला है: काम, नतीजे, फ़ाइलें, हर कमांड का अंजाम, और क्या बाक़ी रह गया। उसी
सेशन और उसी वर्किंग डायरेक्टरी का अगला हुक इसे एक साथ लौटाता है, 4 KB से ज़्यादा नहीं, और एक पंक्ति में बताता है कि
रिपॉज़िटरी तब से बदली या नहीं। `deja stats` कॉम्पैक्शन और पहली एडिट के बीच टूल कॉल्स गिनता है — इसी से यह मापा
गया था।
विवरण [कॉम्पैक्शन के बाद रिकवरी](../../docs/compaction.md) में है।
Claude Code · Cline · Codex CLI · opencode · aider · Gemini CLI · Cursor · Antigravity ·
Grok Build · Hermes · Goose · Qwen Code · Kimi Code · pi · omp (Oh My Pi) · OpenClaw ·
Copilot CLI · VS Code Copilot Chat · Amp · prime-agent (PrimeIntellect) · Roo Code ·
Continue · Crush · DeepSeek Harness · Cherry Studio · Senpi · gajae-code · Kimchi Coding ·
Command Code · ZCode · CodeWhale · Reasonix · Kiro · Kilo Code · CodeBuddy Code ·
TRAE CLI · Muse Code · Junie · JetBrains AI Assistant · Devin CLI · Windsurf / Devin Desktop · MiniMax Code · Zed.
इनमें से हर एक क्या समर्थन करता है — MCP रिकॉल, ऑटोमैटिक रिकॉल, skills, कमांड, resume, handoff — यह
[अंग्रेज़ी README की क्षमता तालिका](../../README.md#supported-harnesses) में है। अलग स्टोरेज जगहें `DEJA_*_ROOT`
वेरिएबल्स से बताई जाती हैं, और टूल्स के अपने माइग्रेशन वेरिएबल्स का भी सम्मान किया जाता है।
### अपना पैकेज रखने वाले एजेंट
`deja install --auto` इन्हें भी बाकियों की तरह जोड़ता है, और वही हमेशा सबसे छोटा रास्ता है। साथ ही हर एक का अपने
इकोसिस्टम में एक पैकेज है, उन लोगों के लिए जो एक्सटेंशन वहीं से लगाते हैं:
| एजेंट | पैकेज | इंस्टॉल |
| --- | --- | --- |
| opencode | npm `opencode-deja` | `opencode plugin opencode-deja` |
| DeepSeek Harness | npm `dsh-deja` | `dsh plugin --profile web add dsh-deja` |
| Zed | `deja-context-server` | Zed → Extensions → deja |
| Kimi Code | प्लगइन `deja` | `/plugins install https://github.com/vshulcz/deja-vu` |
| Codex CLI | प्लगइन `deja-vu` | `codex plugin marketplace add https://github.com/vshulcz/deja-vu`, फिर `codex plugin add deja-vu@deja-vu` |
| Grok Build | प्लगइन `deja` | `grok plugin marketplace add vshulcz/deja-vu`, फिर `grok plugin install deja` |
| OpenClaw | ClawHub और npm `@vshulcz/openclaw-deja` | `openclaw plugins install clawhub:@vshulcz/openclaw-deja` |
| pi (और omp) | npm `@vshulcz/pi-deja` | `pi install npm:@vshulcz/pi-deja` |
| Hermes | Hermes प्लगइन कैटलॉग में मेमोरी प्रोवाइडर `deja-memory` | `hermes plugins install deja-memory`, या GitHub से: `hermes plugins install vshulcz/deja-vu/extensions/hermes` |
दोनों में से कोई एक रास्ता काफ़ी है और दोनों साथ में भी कुछ नहीं तोड़ते: हर पैकेज पहले वही पढ़ता है जो
`deja install` ने लिखा। opencode, dsh और OpenClaw सिर्फ़ छूटा हुआ भरते हैं; Kimi, Grok, Codex और pi हट जाते हैं
अगर इंस्टॉलर पहले ही जोड़ चुका है; Zed में दोनों तरफ़ एक ही server id इस्तेमाल होता है। इसलिए इंस्टॉल का क्रम मायने
नहीं रखता।
ये सब वही deja इस्तेमाल करते हैं जो आपने पहले से इंस्टॉल किया है; पैकेज के भीतर की प्रति सिर्फ़ बैकअप है।
## वैकल्पिक सिमैंटिक रिकॉल
`DEJA_EMBED_URL` से `deja embed` को लोकल Ollama, LM Studio या किसी भी OpenAI-संगत एंडपॉइंट पर मोड़िए, और
दूसरे शब्दों में पूछा गया सवाल भी लग जाएगा। कोई रनटाइम उपलब्ध न हो तो शाब्दिक खोज और MCP रिकॉल हमेशा की तरह
काम करते हैं।
## प्रमाण
उसी काम पर जो यह मशीन पहले हल कर चुकी थी, 58% कम टोकन · LongMemEval-S (470 सवालों का साफ़ किया सेट) पर 88.9% hit@1 · LoCoMo पर 71.9% · गीगाबाइट इतिहास पर मिलीसेकंड में क्वेरी हर भुजा पर ग्यारह रन: कुछ भी जुड़ा न होने पर 126,222 के मुक़ाबले 53,558 टोकन; बाद के बिल्ड पर फिर ग्यारह रन: 103,443 के मुक़ाबले 52,815 ·
एक काम पूरा करने की लागत ·
दोनों रिट्रीवल हार्नेस इसी रिपॉज़िटरी में हैं और सार्वजनिक डेटासेट पर मिनटों में चलते हैं ·
आँकड़े खुद जाँचिए